C语言:快速排序
标签: C语言 快速排序
by 小威威
快速排序是运用二分思想进行排序的。在这里我就不讲解了,因为我找到了一篇写的很好的文章,现在分享给大家 快速排序。
下面直接上我的代码:
# include <stdio.h>
# include <stdlib.h>
void quicksort(int *pArr, int pbig, int psmall);
int main(void) {
int *pArr, len;
printf("Please enter the number of figures you want to sort:");
scanf("%d", &len);
pArr = malloc(len * sizeof(len));
printf("Enter the figures you want to sort:");
for (int i = 0; i < len; i++)
scanf("%d", &pArr[i]);
quicksort(pArr, 0, len-1);
for (int i = 0; i < len; i++)
printf("%d ", pArr[i]);
free(pArr);
pArr = NULL;
return 0;
}
void quicksort(int *pArr, int pbig, int psmall) {
if (pbig >= psmall)
return;
int key = pbig;
int len = psmall+1;
int temp;
while (pbig != psmall) {
for (; psmall > pbig; psmall--) { // don't add the "="
if (pArr[psmall] < pArr[key])
break;
}
for (; pbig < len; pbig++) {
if (pbig == psmall) {
temp = pArr[pbig];
pArr[pbig] = pArr[key];
pArr[key] = temp;
break;
}
if (pArr[pbig] > pArr[key])
break;
}
temp = pArr[pbig];
pArr[pbig] = pArr[psmall];
pArr[psmall] = temp;
}
quicksort(pArr, key, pbig-1);
quicksort(pArr, pbig+1, len-1);
}
以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨。