https://m.toutiao.com/is/JHSWhce/ 一、设计思想 对一组无序的数组进行排序的时候,选其中一个数组元素(一般为中间元素)作为参照,把比它小的元素放到它的左边,比它大的元素放在右边形成2个子数组。再以此方法对2个子数组递归排序,直至最后完成整个数组的排序 例如有数组:{5, 4 , 9 ,7 ,6 ,2 ,1 ,3 , 8 , -1} 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 二、C语言实现 #include 'stdio.h' #include 'stdlib.h' int a[10]={5,4,9,7,6,2,1,3,8,-1}; void quickSort(int i,int j){ int m,n,temp; int k; m = i; n = j; k = a[(i+j)/2]; while(m<=n){ //从左到右找比k大的元素 while(a[m]<k && m<j) m++; //从右到左找比k小的元素 while(a[n]>k && n>i) n--; //若找到且满足条件,则交换 if(m<=n){ temp = a[m]; a[m] = a[n]; a[n] = temp; m++; n--; } } if(m < j) quickSort(m,j); if(n > i) quickSort(i,n); } int main() { quickSort(0,9); for(int i=0;i<=9;i++){ printf('\t%d',a[i]); } return 0; } |
|
来自: 山峰云绕 > 《C语言数据结构描述Windows程序设计》