选择排序:其思想是通过每趟把最大或最小的元素放在最后或最前,这里我们需要一个基数,一般我们选择第一个元素(底层数组实现)。第一趟比较下来,这里选择把最大的找出然后和数组最后一位交换。第二趟把次大的放在倒数第二位,依次类推。
Java实现如下:
public class SelectSort{
public static void selectSort(int []arr){
int index;//定义一个基数,存放数组第一位
////需比较的趟数,随着比较的进行,当只剩最后一个数时,就不用比较了所以i比数组的长度小1
for(int i = 1; i < arr.length; i++){
index = 0;//每趟循环下来要把index重置0,因为把第一位作为基数和其它元素比较
//j会随比较趟数而缩短区间,因为经过一趟或几趟,数组后面的元素基本排好顺序
for(int j = 1; j <= arr.lenght - i; j++){
if(arr[j] > arr[index]){//找出最大的
index = j;//交换位置索引
}
//交换两个元素
int temp = arr[arr.lenght-i];
arr[arr.length-i] = arr[index];
arr[index] = temp;
}
}
}
//测试一下
public static void main(String[] args) {
int []arr = new int []{2,4,1,2002,100,432,12};
SelectSort.selectSort(arr);
System.out.println("经过选择排序后的数组为:");
for (int i : arr) {
System.out.print(i + " ");
}
}
}
//测试结果如下
经过选择排序后的数组为:
1 2 4 12 100 432 2002
初次使用博客,请各位多多指教,不足之处烦请各位指出纠正,谢谢!