#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 { //从右向左找第一个不小于中心元素的位置j while(a[j] > temp && i < j) { j--; //向前寻找 } if(i < j) //当前元素不大于中心元素时,跳出while循环,进入if循环。 { a[i] = a[j]; //当前元素移至左边 i++; } //从左向右找第一个不大于中心元素的位置i while(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; }
编程实现快速排序
最新推荐文章于 2022-03-31 22:36:00 发布