简单算法———快速排序

#include #include void QuickSort(int *a ,int left , int right) {     ///如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了     ///递归结束条件    if(left >= right)    {        return;    }    int i = left;    int j = right;    int key = a[left];    while(i= a[i])         /*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,         因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/        {           i++;        }        a[j] = a[i];    }    a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/    QuickSort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/    QuickSort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/                              /*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/ } int main() {     int i;     int num[]={9,8,5,84,23,1,585,2,1,0};     QuickSort(num,0,sizeof(num)/sizeof(int)-1);     for(i=0;i

你可能感兴趣的:(简单算法———快速排序)