Java的选择排序

来源:互联网 发布:淘宝花呗卖家开通条件 编辑:程序博客网 时间:2024/06/04 20:08

选择排序:

选择排序主要思想是先选取序列中的最大值,放在序列首位,再选取除去序列首位的序列中的最大值,放在第二位,以此类推实现排序。

下面举一个从大到小排序的例子:(红色的表示已经排好序的,蓝色的表示此次排序所交换的数字)

如1,5,2,8,1,9,2,4

第一趟排序后结果: 9,5,2,8,1,1,2,4

第二趟排序后结果: 9,8,2,5,1,1,2,4

第三趟排序后结果: 9,8,52,1,1,2,4

第四趟排序后结果: 9,8,5,4,1,1,2,2

第五趟排序后结果: 9,8,5,4,2,1,1,2

第六趟排序后结果: 9,8,5,4,2,2,1,1

第七趟排序后结果: 9,8,5,4,2,2,1,1

第八趟排序后结果: 9,8,5,4,2,2,1,1

结束

可以看出选择排序是不稳定的,如第一趟排序后两个1的相对位置发生了变化

Java代码实现

class selectSort{private int[] nums;public void sort(){for(int i=0;i<nums.length;i++){int temp=-1;//保存最大值的索引int max =nums[i];//保存最大值for(int j=i;j<nums.length;j++){if(max<nums[j]){temp=j;max = nums[j];}}if(temp!=-1){change(i,temp);}}}public void change(int i,int j){int num=0;num = nums[i];nums[i] = nums[j];nums[j] = num;}public int[] selectSort(int[] nums){this.nums = nums;sort();return nums;}public void print(){for(int i=0;i<nums.length;i++){System.out.print(nums[i]+",");}}}public class select_sort{public static void main(String[] args){int[] numbers = {1,0,8,5,4,2};selectSort ss = new selectSort();ss.selectSort(numbers);ss.print();}}





原创粉丝点击