关于排序
#include <stdio.h>
#define len 9
void swit(int *a,int *b);
int main(void)
{
int i,k,a[]={10,8,5,7,2,6,1,9,3,4},X=10;
printf("The original numbers are :10,8,5,7,2,6,1,9,3,4\n");
for(k=0;k<=len;k++)
for(i=len;i>=0;i--)
if(a[i]<=a[k])
swit(&a[k],&a[i]);
printf("Now the numbers are:");
for(i=0;i<=len;i++)
printf(" %d",a[i]);
printf("\n");
return 0;
}
void swit(int *a,int *b)
{
int m;
m=*a;
*a=*b;
*b=m;
}
为什么我排完1在最后……捣鼓半天没搞定T^T
还有,关于快速排序有没有简短点的例子呢?我查了半天查到一个例子用了好多递归,太乱了倒不清……
[解决办法]
try:
for(k=0;k<=len;k++)
for(i=len;i>=k;i--)
if(a[i]<=a[k])
swit(&a[k],&a[i]);
[解决办法]
http://blog.csdn.net/morewindows/article/details/7961256
[解决办法]
快速排序,很好理解啊。你可以这么理解。首先取数组的第一个元素给了key,此时就相当于挖了一个坑,也就是a[0]空了,需要从数组的最后面开始往前找到第一个比key小的值,比如说是a[j],那么将a[j]填到a[0]中,那么此时a[j]处就是一个坑了。接着从数组前面开始向后找到第一个比key大的值,比如说是a[i],那么将a[i]填到a[j]处,此时a[i]又成了一个坑,依次类推,当第一趟排序完事时,那么key就到了它的正确位置,然后递归前后。这就是挖坑填坑的思想。