常见排序算法 (三)-选择排序

来源:互联网 发布:脸部皮肤粗糙 知乎 编辑:程序博客网 时间:2024/09/21 09:27
算法描述: 
首先找出最大的元素,将其与 a[n-1]位置交换; 
然后在余下的 n-1 个元素中寻找最大的元素,将其与 a[n-2]位置交换, 
如此进行下去直至 n 个元素排序完毕。 
 
过程举例: 
初始元素序列: 8 3 2 5 9 3* 6 
第一趟排序: 8 3 2 5 6 3* 【9 】 
第二趟排序: 3* 3 2 5 6 【 8 9 】 
第三趟排序: 3* 3 2 5 【6 8 9 】 
第四趟排序: 3* 3 2 【5 6 8 9 】 
第五趟排序: 2 3 【3* 5 6 8 9 】 

第六趟排序: 2 【 3 3* 5 6 8 9 】 


public class Main {public static void main(String[] args) {int[] a = { 8, 3, 2, 5, 9, 3, 6 };SelectionSort(a);for (int i = 0; i < a.length; i++) {System.out.println(a[i]);}}public static void SelectionSort(int a[]) {int minIndex = 0;int temp = 0;if (a == null || a.length == 0)return;for (int i = 0; i < a.length; i++) {minIndex = i;// 无序区的最小数据数组下标for (int j = i + 1; j < a.length; j++) {// 在无序中招到最小数据并保持其书序下标if (a[j] < a[minIndex]) {minIndex = j;}}if (minIndex != i) {temp = a[i];a[i] = a[minIndex];a[minIndex] = temp;}}}}

直接选择排序交换少,比较多。元素比较费劲时(如字符串比较)不建议用此算法。 


0 0
原创粉丝点击