ChooseSort源程序
public class ChooseSort {
private static void ChooseSort (int [] a){
for(int i = 0; i < a.length; i++){
//对数组循环,假设数据排在前面的元素总比后面的小,然后与后面的数据进行比较
int k = i;
for(int j = i+1; j <a.length; j++){//对数据遍历,寻找最小的数据元素的数组下标
if(a[j]<a[k])
k = j;
}
//最少值与a[i]交换
if(i != k){
//对i和k进行比较,如果不相等,则i和j下标表示的元素不是同一个元素,则交换a[i],a[k]的值,保证最小值总在最前面
int temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
public static void main(String[] args) {
int[] test1 = { 51, 38, 49, 27, 62, 5, 16 }; // 测试数组
chooseSort(test1);
for (int i = 0; i < test1.length; i++) {
System.out.print(test1[i] + " ");
}
}
}
3.4.1.2 程序运行结果:
5 16 27 38 49 51 62
3.4.2 源程序揭秘
选择排序的基本思想是每一趟(假设是第i趟)处理都是从n-i+1个数据中选择一个数据最小(或最大)的作为有序序列中的第i个数据。其中最简单的一种称为直接选择排序。
选择排序算法的数据结构:
待排序的数组test1 = {51, 38, 49, 27, 62, 5, 16}
选择排序算法原理:
? 直接选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个第二小的元素作为有序序列中的第2个元素并将它定位在第二号存储位置,依此类推,当第n-1趟处理从数据序列的剩下的2个元素中选择一个较小的元素作为有序序列中的最后第2个元素并将它定位在倒数第二号存储位置,至此,整个的排序处理过程就已完成。