内部排序直接插入排序算法折半插入排序希尔排序算法冒泡排序算法外部排序// 快速排序划分操作intPartition(intA[],intlow,inthigh){// 选取第一个元素为枢轴点intpivotA[low];while(lowhigh){// 循环找从右向左小于pivot的元素while(A[high]pivotlowhigh)high--;// 找到该元素将该元素移到左端A[low]A[high];while(A[low]pivothighlow)low;// 将比枢轴大的元素移动到右端A[high]A[low];}// 此时lowhigh, 存放枢轴元素的值A[low]pivot;returnlow;}// 快速排序voidQuickSort(intA[],intlow,inthigh){// 当子序列只剩一个元素时pivot-1low, 这时highlow, 函数结束if(lowhigh){// 划分得到枢轴点位置intpivotposPartition(A,low,high);QuickSort(A,low,pivotpos-1);QuickSort(A,pivotpos1,high);}}intmain(){inta[]{0,3,4,6,8,5,7,9,2,1};intlensizeof(a)/sizeof(a[0]);QuickSort(a,0,len-1);for(inti0;ilen;i){printf(%d\n,a[i]);}return0;}执行结果
快速排序算法
内部排序直接插入排序算法折半插入排序希尔排序算法冒泡排序算法外部排序// 快速排序划分操作intPartition(intA[],intlow,inthigh){// 选取第一个元素为枢轴点intpivotA[low];while(lowhigh){// 循环找从右向左小于pivot的元素while(A[high]pivotlowhigh)high--;// 找到该元素将该元素移到左端A[low]A[high];while(A[low]pivothighlow)low;// 将比枢轴大的元素移动到右端A[high]A[low];}// 此时lowhigh, 存放枢轴元素的值A[low]pivot;returnlow;}// 快速排序voidQuickSort(intA[],intlow,inthigh){// 当子序列只剩一个元素时pivot-1low, 这时highlow, 函数结束if(lowhigh){// 划分得到枢轴点位置intpivotposPartition(A,low,high);QuickSort(A,low,pivotpos-1);QuickSort(A,pivotpos1,high);}}intmain(){inta[]{0,3,4,6,8,5,7,9,2,1};intlensizeof(a)/sizeof(a[0]);QuickSort(a,0,len-1);for(inti0;ilen;i){printf(%d\n,a[i]);}return0;}执行结果