帮忙写几个排序算法!

来源:百度知道 编辑:UC知道 时间:2024/06/08 15:41:57
大家帮忙写几个排序算法(C语言):
简单排序,快速排序,堆排序,希尔排序。

网上也有现成的例子,但我想要那种每种排序算法中每一步都输出结果的那种!
比如:快速排序,每排一次就输出一次排序结果,直到最后输出结果!

各位帮帮忙谢谢!
VC++6.0!和编译器有关系么?

普通排序的就没有给你弄了。其他的快速排序,堆排序,希尔排序都有,每一步的输出排序情况
#include<stdio.h>
//////////////////////////////////////////////
//堆排
void shift(int a[] , int i , int m)
{
int k , t;
int s;
t = a[i]; k = 2 * i + 1;
while (k < m)
{
if ((k < m - 1) && (a[k] < a[k+1])) k ++;
if (t < a[k])
{
a[i] = a[k]; i = k; k = 2 * i + 1;
}
else break;
}
a[i] = t;
for(s=0;s<10;s++)
printf("%d ",a[s]);
printf("\n");

}

void heap(int a[] , int n) //a 为排序数组,n为数组大小(编号0-n-1)
{
int i , k;

for (i = n/2-1; i >= 0; i --) shift(a , i , n);
for (i = n-1; i >= 1; i --)
{
k = a[0]; a[0] = a[i]; a[i] = k;
shift(a , 0 , i);
}
}

////////////////////////////////////////////////
//快排
void quick(int a[] , int s , int t