搜索
楼主: 凡夫俗子
打印 上一主题 下一主题

C语言排序

[复制链接]
7#
发表于 2012-8-10 13:18:32 | 只看该作者
代码都有一些问题。是不是着急打太快了?{:soso_e112:}
6#
 楼主| 发表于 2012-8-10 12:27:32 | 只看该作者
午饭ing,之后上课至5点,回来继续
5#
 楼主| 发表于 2012-8-10 12:21:48 | 只看该作者
本帖最后由 =student= 于 2012-8-21 12:12 编辑

[ 本帖最后由 =student= 于 2012-8-10 21:46 编辑 ]\n\n[ 本帖最后由 =student= 于 2012-8-10 21:45 编辑 ]\n\nC语言排序——插入排序
原理:每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.    int   a[10000],i,j,k,t,n;
  5.    printf("请输入要排序输的个数:");
  6.    scanf("%d",&n);
  7.     printf("请输入数据(数之间要有空格):");
  8.    for(i=0;i<n;i++)
  9.    {
  10.                 scanf("%d",&a[i]);
  11.    }
  12.    
  13.    for (j=1;j<n;j++)
  14.    {  
  15.       k = a[j];
  16.           i = j - 1;
  17.           while ((i >= 0) && (a > k))/* 开始插入排序的内层循环,注意循环条件以及终止条件 */
  18.        {     
  19.              a[i+1] = a;
  20.                  i--;
  21.           }
  22.           a[i+1] = k;
  23.       if(j==n-1)
  24.       {
  25.                  printf("从小至大排序:");
  26.                 for (t = 0;t<n;t++)
  27.                 {
  28.                         printf("%d ",a[t]);
  29.                 }
  30.                 printf("\n");
  31.       }
  32.    }
  33.    sleep(50000);
  34.    return 0;
  35. }
复制代码


图片:

继续更新ing

3.png (55.87 KB, 下载次数: 11)

3.png
地板
 楼主| 发表于 2012-8-10 11:08:20 | 只看该作者
有点小烧,37℃
板凳
 楼主| 发表于 2012-8-10 10:51:50 | 只看该作者
本帖最后由 =student= 于 2012-8-21 12:12 编辑

[ 本帖最后由 =student= 于 2012-8-10 21:43 编辑 ]\n\nC语言排序——冒泡排序
冒泡排序类似于选择排序,但选择排序效率更高。
原理: 设想被排序的数组a[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。

  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int i,j,t,n;
  5.         int a[300000];
  6.     printf("请输入要排序输的个数:");
  7.     scanf("%d",&n);
  8.     printf("请输入数据(数之间要有空格):");
  9.         for(i=0;i<n;i++);
  10.         scanf ("%d",&a[i]);
  11.         for(i=1;i<=n;i++)
  12.         {
  13.         for (j=0;j<n-j;j++)
  14.         {
  15.                         if (a[j]>a[j+1]) //交换
  16.                         {
  17.                                 t=a[j];
  18.                                 a[j]=a[j+1];
  19.                                 a[j+1]=t;
  20.                         }
  21.         }
  22.         }
  23.      printf("从小至大排序:");
  24.         for(i=0;i<n;i++)
  25.         {
  26.                 printf("%d ",a[i]);
  27.          }  
  28.     sleep(100000);
  29.     return 0;
  30. }
复制代码


上图:

继续更新。。。

搜狗截图_2012-08-10_10-44-43.png (59.83 KB, 下载次数: 7)

搜狗截图_2012-08-10_10-44-43.png
沙发
 楼主| 发表于 2012-8-10 09:39:34 | 只看该作者
本帖最后由 =student= 于 2012-8-21 12:12 编辑

[ 本帖最后由 =student= 于 2012-8-21 12:12 编辑 ]\n\n[ 本帖最后由 =student= 于 2012-8-10 21:44 编辑 ]\n\n[ 本帖最后由 =student= 于 2012-8-10 21:42 编辑 ]\n\nc
语言排序之——基数排序(又称桶排序)
由于C语言下标数组限制,以下代码只能执行300000及以下的运算,若想更大可以定义多个数组并进行判断。
代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a[300001]={0},n,t,i,j;
  5.     printf("请输入要排序输的个数");
  6.     scanf("%d",&n);
  7.     printf("请输入数据(数之间要有空格):");
  8.     for(i=1;i<=n;i++)
  9.     {
  10.         scanf("%d",&t);
  11.         a[t]++;//这个数据的下标增加
  12.     }
  13.     printf("从小至大排序:");
  14.     for(i=0;i<=300000;i++)
  15.     {
  16.                 if(a>0);
  17.         {
  18.                         for(j=1;j<=a;j++)
  19.                         {
  20.                                 printf("%d ",i);
  21.                         }                        
  22.                 }
  23.     }
  24.     sleep(100000);
  25.     return 0;
  26. }
复制代码



上图:
继续更新。。。


2.png (29.25 KB, 下载次数: 4)

2.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表