C语言数据结构和算法快速排序法

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;

}

(0)

相关推荐