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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊德玺 中级黑马   /  2015-11-8 19:59  /  941 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*

  选择排序

思路:  对于一个数组,先定义一个数组的元素为最大值,取这个最大值的角标, 然后取第二个元素与之对比, 判断大小,如果第二个元素比第一个大,那么就将第二个元素的角标赋值给第一个元素,   依次循环到这个数组结束,把两个元素交换位置
     此为第一轮
    然后再依次判断剩下的数,实现交换即可


*/


  1. #include <stdio.h>

  2. int main(){

  3.     int ss[6]={0,2,4,6,5,8};  
  4.    
  5.     int jiaobiao=0;
  6.     for (int i=0; i<6;i++) {
  7.         int jiaobiao=i;
  8.         for (int j=i+1; j<6; j++)
  9. {
  10.        if (ss[jiaobiao]<ss[j])   //如果下一个元素的值大于之前我们定义的最值,
  11.           {
  12.              jiaobiao=j;           //就将这个值的角标给之前的最值,
  13.           }
  14.     }
  15.         printf("第%d轮的排序的最大值角标为%d\n",i,jiaobiao);   //并打印输出这个最值得角标
复制代码



5 个回复

正序浏览
写的很详细,关键是有代码
回复 使用道具 举报
受教了,顶一下
回复 使用道具 举报
zyios 发表于 2015-11-8 21:05
写的很详细,关键是有代码

现在是依葫芦画瓢来着   
回复 使用道具 举报
写的很详细,关键是有代码
回复 使用道具 举报
  
#include <stdio.h>

int main(){
int ss[6]={0,2,4,6,5,8};
   
    int jiaobiao=0;
    for (int i=0; i<6;i++) {
        int jiaobiao=i;
        for (int j=i+1; j<6; j++)
        {
            if (ss[jiaobiao]<ss[j])   //如果下一个元素的值大于之前我们定义的最值,
            {
                jiaobiao=j;           //就将这个值的角标给之前的最值,
            }
        }
        printf("第%d轮的排序的最大值角标为%d\n",i,jiaobiao);   //并打印输出这个最值得角标
        int linShi=ss[i];
        ss[i]=ss[jiaobiao];       //  这里三行是实现对应角标的值的互换,
        ss[jiaobiao]=linShi;
        for (int h=0; h<6; h++)
        {
            printf("%d\t",ss[h]);  // 这里的for是执行每一轮排序之后就打印输出一次当前排序,
        }
        printf("\n");
      
    }
    for (int k=0; k<6; k++)
    {
        printf("%d\t",ss[k]);        //最终打印排序
    }
    printf("\n");
   
    return 0;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马