您的位置:首页 > 其它

快速排序

2015-07-07 02:22 148 查看

快速排序C语言实现

这里我实现了一个quick函数,它的类型为空,第一个参数为要排序的数组的首地址,第二个参数为该数组的长度。
#include <stdio.h>
#define N 10

int* p;

void quick(int* arr, int length)
{
int i,j,a,temp;
i = 0;
j = length - 1;
a = arr[0];

while(i != j)
{
//j move
while(i != j && arr[j] >= a)
{
j--;
}
if(i == j)
{
break;
}

//i move
do{
i++;
}while(i != j && arr[i] < a);
if(i == j)
{
break;
}

temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;

printf("==>");
for (int i = 0; i < N; i++)
{
printf("%d ", p[i]);
}
printf("\n");

if(i > 1)
{
quick(&arr[0], i);
}
if((length - 1 - i) > 1)
{
quick(&arr[i+1], length - 1 - i);
}
}

int main()
{
int array
= {5,4,6,2,7,8,1,10,9,3};
p = array;
for (int i = 0; i < N; i++)
{
printf("%d ", array[i]);
}
printf("\n");

quick(array, N);

for (int i = 0; i < N; i++)
{
printf("%d ", array[i]);
}
printf("\n");

return 0;
}

输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: