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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三月小雨 中级黑马   /  2015-7-24 17:20  /  1196 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

选择排序法的基本思想:将数组第一个元素设为基数。将后面的元素依次与该基数进行比较,如果有某个元素比基数小,就将该数与基数进行交换,直至第n个元素,完成第一趟比较。再设数组第二个元素为基数,重复上面的过程。

#include <stdio.h>

int main(int argc, const char * argv[]) {
   
    int array[]={18,25,2,41,32,19,7};
    int len =7;
        for (int i=0; i<len; i++) {
            for (int j=i; j<len; j++) {
                if (array[i]>array[j]) {
                    //此处使用异或来对调变量的值
                    array[i]=array[i]^array[j];
                    array[j]=array[i]^array[j];
                    array[i]=array[i]^array[j];
                }
            }
        }
    for (int i=0; i<len; i++) {
        printf("%d\t",array[i]);
    }
    return 0;
}

7 个回复

倒序浏览
用异或很不错!我们这个笨蛋只会有临时变量!
回复 使用道具 举报
内层用for (int j=i+1; j<len; j++)更好吧 能减少几次没必要比较
回复 使用道具 举报
865061682 发表于 2015-7-25 00:18
内层用for (int j=i+1; j

还有外层 用len-1也会减少没必要比较啊
回复 使用道具 举报
围观学习!
回复 使用道具 举报
学习学习··
回复 使用道具 举报
Northcity 发表于 2015-7-25 02:01
还有外层 用len-1也会减少没必要比较啊

楼上正解
回复 使用道具 举报

大神  给小弟施舍点黑马币呗:'(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马