#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void quick_sort(int *array, int len)
{
int i, j;
int tmp, ts;
if (array == NULL || len <= 0) {
return;
}
i = 0;
j = len - 1;
ts = array[0];
while (i < j) {
while (i < j && array[j] >= ts) {
j--;
}
while (i < j && array[i] <= ts) {
i++;
}
if (i < j) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
array[0] = array[i];
array[i] = ts;
quick_sort(array, i);
quick_sort(array + (i + 1), len - (i + 1));
}
void print_array(int *a, int len)
{
int i = 0;
printf("before sort:\n");
while (i < len) {
printf("%d ", a[i++]);
}
printf("\n");
printf("after sort:\n");
quick_sort(a, len);
i = 0;
while (i < len) {
printf("%d ", a[i++]);
}
printf("\n\n");
}
void array_gen(int *a, int len)
{
int i = 0;
if (a == NULL || len <= 0) {
return;
}
while (i < len) {
a[i++] = rand() % 50;
}
}
int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int B[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int C[] = {2, 1, 3, 4, 5, 6, 7, 8, 9, 10};
int D[] = {5, 1, 3, 4, 2, 6, 7, 8, 9, 10};
int main(int argc, char *argv)
{
int q = 0;
int A[50];
while (!q) {
array_gen(A, 50);
print_array(A, 50);
scanf("%d", &q);
if (q == 1) {
printf("quit!\n");
}
}
return 0;
}
一个简易的数组快速排序算法
下一篇:单链表的代码
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)
技术专家
查看更多- 栈栈专家