至少使用3种排序方法,用C语言实现.
有一个自然数序列:5 21 13 7 9 1 17 13 ;
用C语言实现;
要不至少使用三种排序方法。
(注:最好用很容易理解的方法.)
[解决办法]
google 冒泡,插入,快速排序
[解决办法]
排序算法比较程序
关键字:排序算法,shellsort,quicksort,heapsort,mergesort
http://www.ccrun.com/article.asp?i=289&d=ttb3xs
其中有了 排序程序,
楼主你只要传入需要排序的数据即可
[解决办法]
随便一本数据结构的书都有
[解决办法]
基本排序算法问题,下面是选择排序,一般的做法.可以改下N的值对不同个数的值排序.输入的值按你那顺序输就好了.
#include <stdio.h>
#include <stdlib.h>
#define N 8
int main()
{
int i, j, k, t;
int a[N];
printf( "Please input %d numbers\n ", N );
for ( i = 0; i < N; i++ )
scanf( "%d ", &a[i] );
for ( i = 0; i < N-1; i++ )
{
k = i;
for ( j = i+1; j < N; j++ ) /* 每次把最小的数放在最前面 */
if ( a[j] < a[k] )
k = j;
if ( i != j )
{
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
printf( "the sequence after sorted is\n " );
for ( i = 0; i < N; i++ )
printf( "%-3d ", a[i] );
printf( "\n " );
system( "pause " );
return 0;
}
[解决办法]
插入排序.
#include <stdio.h>
#include <stdlib.h>
#define N 8
int main()
{
int i, j, t;
int a[N];
printf( "Please input %d numbers\n ", N );
for ( i = 0; i < N; i++ )
scanf( "%d ", &a[i] );
for ( i = 1; i < N; i++ )
{
t = a[i];
j = i-1;
while ( t < a[j] && j > = 0 ) /* 每次把后面的一个与前面排好的比较 */
{
a[j+1] = a[j];
j--;
}
a[j+1] = t;
}
printf( "the sequence after sorted is\n " );
for ( i = 0; i < N; i++ )
printf( "%-3d ", a[i] );
printf( "\n " );
system( "pause " );
return 0;
}
[解决办法]
我正在写关于排序的blog,可以去看看
hi.baidu.com/thinkinnight
现在写了
1.冒泡排序
2.直接插入排序
3.链表插入排序
4.直接选择排序
5.快速排序
6.希尔排序
以上都画了分析过程图
正在写其他如基数排序,堆排序等
等写完这些分析之后,会开始写各个排序对应的源码,以及速度分析,不过要看我还要写多久了。
[解决办法]
冒泡排序.
#include <stdio.h>
#include <stdlib.h>
#define N 8
int main()
{
int i, j, t;
int a[N];
printf( "Please input %d numbers\n ", N );
for ( i = 0; i < N; i++ )
scanf( "%d ", &a[i] );
for ( i = 1; i < N; i++ )
{
for ( j = 0; j < N-1-i; j++ )
if ( a[j] > a[j+1] )
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
printf( "the sequence after sorted is\n " );
for ( i = 0; i < N; i++ )
printf( "%-3d ", a[i] );
printf( "\n " );
system( "pause " );
return 0;
}
[解决办法]
网上资料很多。。lz