算法学习快速排序
Posted teensspirit-code-life
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习快速排序相关的知识,希望对你有一定的参考价值。
1.算法思路:
选择一个基准点,将数组中比基准点小的值移到基准值左边,比基准值大的移到基准值右边。然后递归调用,将基准值左右两边的数组做同样操作,递归结束的条件是数组只有一个元素。
基准点归位的方法:
设一头一尾两个指针,右指针向左找比第一个基准值小的数,左指针向右找第一个比基准值大的数,找到后交换,直到左指针==右指针;
2.代码:
void quicksort(int left,int right) { int i,j,t,temp; if(left>right) return; temp=a[left]; //temp中存的就是基准数 i=left; j=right; while(i!=j) { while(a[j]>=temp && i<j) j--; while(a[i]<=temp && i<j) i++; //交换 if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t; } } a[left]=a[i]; a[i]=temp; quicksort(left,i-1); quicksort(i+1,right); }
以上是关于算法学习快速排序的主要内容,如果未能解决你的问题,请参考以下文章