选择排序
- 选择排序是最简单的排序算法。算法思想非常的简单:
- ①先找到数组中最小的那个元素,将他和数组的第一个元素交换位子。
- ② 在剩下的元素中找到最小的元素,并且与第一个最小元素的右边第一个元素交换位置,如此反复。每次都在剩余的元素中去寻找最小元素。
- 如数组 [10,1,3,4,2,8,9]进行排序
- 使用minIndex变量记录最小值的下标。每一轮都能找到最下值。如果 最小值下标发生了变化,就交换两个数组.
- 第一轮: 外层循环:i=0; minIndex=i;内层循环从j=i+1开始, 进行arr[j]<arr[i]的判断,如果排队成立,就将minIndex更新为j,内存循环结束之后,会判断最小值下标是否发生了变化,如果变化了 就 交换arr[i]与arr[minIndex]的值。
- 第二轮:i=1,minIndex=i;此时arr[i]=10;从内存循环,找到余下的最小值,并更新minIndex的值。
- 第三轮:i=2;minIndex=i,此时arr[i]=3;在内层循环中没有找到比3 更小的值就不进行交换。
- 后面依次进行比较并交换即可。具体代码如下
public static void select_sort(int array[],int lenth){
for(int i=0;i<lenth-1;i++){
int minIndex = i;
for(int j=i+1;j<lenth;j++){
if(array[j]<array[minIndex]){
minIndex = j;
}
}
if(minIndex != i){
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
}