Jave实现排序算法:选择排序
程序员文章站
2024-03-01 13:17:34
...
选择排序
版本1
从小到大:
1、定义一个10个int元素的数组。
2、选择第一个元素,将这个元素和剩下的九个元素相比,找出最小的那个,然后和第一个元素交换位置。如果第一个元素就是最小的元素,那么不需要交换位置(<或者>,而不是<=或者>=)
3、选择第二个元素,将这个元素和剩下的八个元素相比,找出最小的那个,然后和第二个元素交换位置。如果第二个元素就是最小的元素,那么不需要交换位置(<或者>,而不是<=或者>=)
4、。。。。。。
也可以这样想:假设第一个元素就是最小的那个元素,将这个元素和剩下的九个元素相比,看还有没有比它小的元素,如果有,就将这个元素放到最小元素的位置—第一个元素。。。。
package com.oceanstar.sort;
import java.util.Arrays;
public class sort {
public static void main(String []args){
int []arr = {199, 11, 23, 56, 55, 49, 88};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static int [] selectSort(int []arr){
for(int i=0; i<arr.length-1; i++){
for (int j=i+1; j<arr.length; j++){
if (arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
}
总结:有序区逐步扩大,无序区逐步缩小
选择排序法需要比较:9+7++6+5+4+3+2+1次
版本2
从小到大:
1、定义一个10个int元素的数组。
2、选择第一个元素为最小的元素,并用一个index和num记录下此时的值与索引。然后分别拿这个值与剩下的值相比,如果有比这个元素还要小的元素,就用index和num记录下此时的值和索引。比较完一轮之后,如果发现index不为1,那么和第一个元素相交换。
3、选择第二个元素为最小的元素,并用一个index和num记录下此时的值与索引。然后分别拿这个值与剩下的值相比,如果有比这个元素还要小的元素,就用index和num记录下此时的值和索引。比较完一轮之后,如果发现index不为2,那么和第二个元素相交换。
4、。。。
package com.oceanstar.sort;
import java.util.Arrays;
public class sort {
public static void main(String []args){
int []arr = {199, 11, 23, 56, 55, 49, 88};
SelectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static int [] SelectSort(int []arr){
for(int i = 0; i < arr.length-1; i++){
int index = i;
for (int j = i+1; j < arr.length; j++){
if (arr[j] < arr[i]){
index = j;
}
}
if( index != i){
swap(arr, i, index);
}
}
return arr;
}
public static void swap(int []arr, int x, int y){
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
总结:比起版本1,交换的步骤要小
上一篇: win32应用程序创建流程(消息处理)
下一篇: 查找算法 java