为什么排序有重复的c语言,快速排序 ,为什么出现相同的数就不出结果了

再补充一个快速排序的代码 留做备用 与楼主的思路也更加一致

21c92f7342edc52acb5684b0b88bdcec.png程序代码:#include

#define LEN 10

void swap(int *a, int *b) {

int t = *a;

*a = *b;

*b = t;

}

int part(int *arr, int len) {

int i = 0, idx = 0, val = *arr;

swap(arr, arr + len - 1);

for(; i < len; i++) {

if(*(arr + i) < val) {

swap(arr + i, arr + idx);

idx++;

}

}

swap(arr + len - 1, arr + idx);

return idx;

}

void prt(int *arr, int len) {

int i = 0;

for(; i < len; i++) {

printf("%d ", arr[i]);

}

printf("\n");

}

void qSort(int *arr, int len) {

int idx ;

if(len > 1) {

idx = part(arr, len);

qSort(arr, idx);

qSort(arr + idx + 1, len - idx - 1);

}

}

int main(void) {

int i = 0, arr[LEN] = {7, 4, 2, 5, 1, 5, 3, 1, 7, 6};

/*

for(; i < LEN; i++){

scanf("%d", arr + i);

}

*/

qSort(arr, LEN);

prt(arr, LEN);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值