A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 米易雅克 中级黑马   /  2015-11-29 19:22  /  854 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a[] = {1,2,4,3,8,5};
  5.     //数组总共有多少元素
  6.     int n = (sizeof a)/(sizeof (int));
  7.     //定义一个中间变量用于交换数据
  8.     int t=0;
  9.     for(int i = 0;i<n-1;i++) // 要进行n-1轮排序(从i=0到i=n-2,i=0,1,2,3,4)
  10.     {
  11.         for(int j=0;j<n-1-i;j++)
  12.         {
  13.             if(a[j]<a[j+1])
  14.             {
  15.                 t = a[j];
  16.                 a[j] = a[j+1];
  17.                 a[j+1] = t;
  18.             }
  19.         }
  20.     }
  21.     for(int k=0;k<n;k++)
  22.     {
  23.         printf("%d\t",a[k]);
  24.     }
  25. }
复制代码



///选择
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     //要排序的数组
  5.     int a[] = {1,2,4,3,8,5};
  6.     //最大值的脚标
  7.     int tempIndexMax = 0;
  8.     for(int i = 0; i<5 ; i++)//第几轮排序
  9.     {
  10.         int tempIndexMax = i;
  11.         for(int j = i+1; j<6;j++)//当前这轮排序的具体实现
  12.         {
  13.             if(a[tempIndexMax]<a[j])//a[j]是否大于先前的"最大值"
  14.             {
  15.                 tempIndexMax=j; //如果a[j]大于先前"最大值",改变"最大值的脚标"
  16.             }
  17.         }
  18.         //输出每轮排序的最大值脚标
  19.         printf("第%d轮排序的最大值脚标是%d\n",i,tempIndexMax);
  20.         //把找到的最大值和之前的最大值互换
  21.         int temp = a[i];
  22.         a[i]=a[tempIndexMax];
  23.         a[tempIndexMax] = temp;
  24.     }
  25.     for(int k = 0; k<6 ;k++)
  26.     {
  27.         printf("%d\t",a[k]);
  28.     }
  29.    
  30.     return 0;
  31. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马