C快速排序

来源:互联网 发布:vibe算法改进代码 编辑:程序博客网 时间:2024/05/23 13:53

思路:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

这里写图片描述

#include <stdio.h>int division(int a[] ,int left,int right);void quickSort(int a[],int left,int right);int main(){    int a[10]={25,34,24,65,56,78,72,96,87,15};    quickSort(a,0,9);    //打印数组    for(int p=0;p<10;p++)        printf("%d ",a[p]);     return 0;} int division(int a[] ,int left,int right)   //分割函数 {    int basic=a[left];//基准数字     while(left<right)    {        while(left<right && a[right]>basic)  //右边的数字大于基准数字             --right;                         //大于则继续自右向左比较         a[left] = a[right];                  //右边的小于基准数字则停止,并将小于的值赋予左边         while(left<right && a[left]<basic)   //right不成立时,再从左边比较             ++left;                          //小于则,继续查找         a[right]=a[left];                    //大于时,将左值赋给right     }    a[left]=basic;    return left;}void quickSort(int a[],int left,int right){    int i,j;    if(left<right)    {        i=division(a,left,right);        quickSort(a,left,i-1);        quickSort(a,i+1,right);    }} 
0 0