您的位置:首页 > 理论基础 > 数据结构算法

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

2017-12-27 10:20 344 查看
一、选择排序也是简单排序中十分经典的排序算法。

b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr
中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr
中选出最小的数据,将它与r[2]交换;以此类推,第i趟在待排序数据arr[i]~arr
中选出最小的数据,将它与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



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: