数据结构简单排序之选择排序

一、选择排序也是简单排序中十分经典的排序算法。

b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}1排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与r[2]交换;以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。


c) 举例:数组 int[] a={1,4,3,5,8,10,6};

-------------------------------------------------------

第一趟排序: 原始数据:1,4,3,5,8,10,6

最大数据10,把10放在首位,也就是1和10互换位置,

排序结果:10,4,3,5,8,1,6

-------------------------------------------------------

第二趟排序:

10以外的数据{4 3 5 8 1 6}进行比较,8最大

排序结果:8 3 5 4 1 6

-------------------------------------------------------

第三趟排序:

10、8以外的数据{3 5 4 1 6}进行比较,6最大  3和6互换

排序结果:6 5 4 1 3

-------------------------------------------------------

第四趟排序:

除第10、8、6以外的其他数据{5 4 1 3}进行比较,5最大 不用交换

排序结果:10 8 6 5 4 1 3

-------------------------------------------------------

第五趟排序:

除第10 8 6 5以外的其他数据{4 1 3}进行比较,4最大  不用交换

排序结果:10 8 6 5 4 1 3 

第6趟排序

除第10 8 6 5 4 以外的其他数据{1 3}进行比价  3最大 1和3进行互换

排序结果  10 8 6 5 4 3 1 

-------------------------------------------------------

注:每一趟排序获得最小数的方法:for循环进行比较,定义一个第三个变量temp,首先前两个数比较,把较小的数放在temp中,然后用temp再去跟剩下的数据比较,如果出现比temp小的数据,就用它代替temp中原有的数据。


代码分析:

 int [] a={1,4,3,5,8,10,6};
       //外层循环控制里层循环的循环次数,所以外层循环是核心人物
        System.out.println("交换之前:");
        for(int t:a){
            System.out.print(" "+t+" ");
        }
        for(int i=0;i<a.length-1;i++){//这时候定义外层循环的指针指向下标为1的第二个数,为了里层循环下标不越界
           for(int j=i+1;j<a.length;j++){
               //先定义一个临时变量,保存临时结果
               if(a[i]<a[j]){
                   int temp=a[i];
                   a[i]=a[j];
                   a[j]=temp;
               }
           }

        }
        System.out.println();
       System.out.println("交换之后:");
        for(int k=0;k<a.length;k++){
            System.out.print(" "+a[k]+" ");
        }
结果:
交换之前:
 1  4  3  5  8  10  6 
交换之后:
 10  8  6  5  4  3  1 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值