JAVA实现--基础算法FOR选择排序

首先 实现简单的选择排序。

简单排序的思路很简单,就是通过遍历(数组的length次)的数组,每次遍历找出最小的放到数组的第一个位置,下次遍历时就不用考虑第0位置的数从第1的位置开始找1到length中最小的数。。。

实现最简单的选择排序

 1    //实现选择排序的方法
 2     public static int[] selSort(int[] arr){
 3         //先遍历数组
 4         for(int i = 0;i < arr.length;i++){
 5             //在每次遍历时进行比较
 6             for(int j = i;j < arr.length;j++){
 7                 //如果有元素大于后面的元素进行交换
 8                 if(arr[i] > arr[j]){
 9                     int temp = arr[i];
10                     arr[i] = arr[j];
11                     arr[j] = temp;
12                 }
13             }
14         }
15         //将排序后的结果返回
16         return arr;
17     }

对选择排序进行优化,在这个排序中,每次找到比原数小的数就需要进行交换这样会造成资源的浪费,我们可以先保存(当前)第一位数字,用它和其它数去比较,找到最大(或者小)的那个数的下标,在循环执行完毕后看这个数字是不是被交换过,如果交换过那就交换下标对应的数值。

 1     public static int[] selSort2(int[] arr){
 2         //依旧先进行遍历
 3         for(int i = 0;i < arr.length;i++){
 4             //在每次遍历时保存当前位置的下标
 5             int index = i;
 6             //在每次遍历时进行比较
 7             for(int j = i;j < arr.length;j++){
 8                 //这里必须时index 而不是 i ,因为index可以改,i不能改变
 9                 if(arr[index] > arr[j])
10                     index = j;
11             }
12             //如果进行过交换那么 就交换它们的值
13             if(index != i){
14                 int temp = arr[i];
15                 arr[i] = arr[index];
16                 arr[index] = temp;
17             }
18         }
19         //将交换后的结果返回
20         return arr;
21 }

猜你喜欢

转载自www.cnblogs.com/zhangruifeng/p/9334169.html