面试题1 快速排序
//大体思路
- 先从数列中取出一个数作为基准数。
- 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- 采用递归的方式对待排序的数列进行若干次的操作,
//具体思路
参照博客:https://www.cnblogs.com/yundan/p/4022056.html
或则视频:https://www.bilibili.com/video/BV1at411T75o?from=search&seid=37805232156390215
//调用
void Main(){
Quit_Sort(listb, 0, listb.Length - 1);
}
//快速排序
int[] listb = { 15, 7, 12, 45, 23, 3, 9, 55 };
void Quit_Sort(int[] b,int left,int right) {
if (left < right)
{
int mid = Get_Mid(b, left, right);
Quit_Sort(b, left, mid - 1);
Quit_Sort(b, mid + 1, right);
}
else {
Debug.Log(b);
}
}
int Get\_Mid(int\[\] b, int left, int right)
\{
int priov = b\[left\];
while (left < right)
\{
while (left < right)//右
\{
if (b\[right\]>= priov) \{
right--;
\}
else \{
b\[left\] = b\[right\];
break;
\}
\}
while (left < right)
\{
if (b\[left\] >= priov)
\{
b\[right\] = b\[left\];
break;
\}
else
\{
left++;
\}
\}
\}
b\[left\] = priov;
return left;
\}
还没有评论,来说两句吧...