快速排序

来源:互联网 发布:商家平台源码 编辑:程序博客网 时间:2024/06/07 02:53
#include<stdio.h>void quicksort(int a[],int left,int right){int i,j;if(left < right){i = left;                                      //left、right用于限定要排序数列的范围,temp即为中心元素j = right;int temp = a[left];do{//从右向左找第一个不小于中心元素的位置jwhile(a[j] > temp && i < j)                {j--;                                    //向前寻找}if(i < j)                                   //当前元素不大于中心元素时,跳出while循环,进入if循环。{a[i] = a[j];                            //当前元素移至左边i++;}//从左向右找第一个不大于中心元素的位置iwhile(a[i] < temp && i < j){i++;}if(i < j){a[j] = a[i];j--;}}while(i < j);                                 //控制当组内寻找一遍a[i] = temp;                                   //将中心元素填入最终位置quicksort(a,left,i-1);                         //最后用同样的方式对分出来的左边的小组进行同上的做法quicksort(a,i+1,right);                        //最后用同样的方式对分出来的右边的小组进行同上的做法}}int main(){int i;int a[] = {5, 4, 8,9, 1,3};int n = sizeof(a) / sizeof(int);quicksort(a,0,n-1);printf("快速排序结果:");for(i=0; i<n; i++){printf("%d ",a[i]);}printf("\n");return 0;}