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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_hg1q2t6v 中级黑马   /  2014-12-17 19:26  /  1245 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

冒泡排序法:  
设有n个数要求从小到大排列,冒泡排序法的排序过程分为如下的n-1步:  
第1步 从下向上,相邻两数比较,小者调上。反复执行n-1次,第1个数最小。
第2步 从下向上,相邻两数比较,小者调上。反复执行n-2次,前2个数排好。
第k步 从下向上,相邻两数比较,小者调上。反复执行n-k次,前k个数排好。 ...  
第n-1步 从下向上,相邻两数比较,小者调上。反复执行1次,排序结束。

选择排序法:   
设有n个数要从小到大排列,选择排序法排序过程分为n-1步:   
第一步 在第1n个数中找出最小数,然后和第一个数交换,前一个数排好。  
第二步 在第2n个数中找出最小数,然后和第二个数交换,前两个数排好.  ...   
第二步 在第kn个数中找出最小数,然后和第k个数交换,前k个数排好.

4 个回复

倒序浏览
冒泡是无脑交换,比自己小(或者大)就交换,一路换过去;选择是找出最值再交换
回复 使用道具 举报
哥们说的好,我帮你附图一张
回复 使用道具 举报
int main() {
        //定义一个数组
        int a[]={3,5,1,4,9};
        
        //冒泡排序
        for (int i=0; i<5-1; i++) {
            for (int j=0; j<5-1-i; j++) {
                if (a[j]>a[j+1]) {
                    int t=a[j+1];
                    a[j+1]=a[j];
                    a[j]=t;
                }
            }
        }
        for (int i=0; i<5; i++) {
            printf("%d\t",a[i]);
            
        }
    printf("\n");
    return 0;
}
回复 使用道具 举报
int main(){
    //定义一个数组
    int a[]={3,5,1,4,9};
   
    //选择排序
    for (int i=0; i<5; i++) {
        for (int j=i+1; j<5; j++) {
            if (a[i]>a[j]) {
                int t=a[j];
                a[j]=a[i];
                a[i]=t;
            }
        }
    }
    for (int i=0; i<5; i++) {
        printf("%d\t",a[i]);
        
    }
    printf("\n");
    return 0;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马