欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

选择排序

程序员文章站 2022-03-01 15:12:14
...
[b]选择排序的基本思想是:[/b]

从arr[i+1]到arr[arr.length-1]中,[b][color=red]选择出[/color][/b]最小或最大的数,然后与arr[i]进行互换。

[b]详细描述:[/b]

对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n-1]中最小者与L[0]交换位置,第2遍处理是将L[2..n-1]中最小者与L[1]交换位置,......,第i遍处理是将L[i..n-1]中最小者与L[i-1]交换位置。这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。
  当然,实际操作时,也可以根据需要,通过从待排序的记录中选择最大者与其首记录交换位置,按从大到小的顺序进行排序处理。


[b]算法代码如下:[/b]


/**
* 选择排序
* @param arr
* 待排序数组
*/
public void selectSort(int[] arr) {

//遍历数组
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
int minIndex = i;

//选出位置i+1后面最小的数所在位置的索引
for (int j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}

//将最小的那个数与位置为i上的数值互换
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
相关标签: 算法 J#