排序算法之选择排序

来源:互联网 发布:qq飞车白银雷诺数据 编辑:程序博客网 时间:2024/06/14 23:48

  选择排序改进了冒泡排序,将必要的交换次数从O(N²)减少到O(N),但是比较次数不变,仍为O(N²),然而,选择排序仍然为大数据的排序提出了一个非常重要的改进,因为这些大量的记录需要再内存中移动,这就使交换的时间和比较的时间相比,交换时间显得更为重要。

 原理:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。在n-i+1(i=1,2,...n-1)个记录中选取关键字最小的记录作为数组中的第i个记录。

 

示例代码如下:

import java.util.Arrays;import java.util.Random;public class SelectSort {public static void main(String[] args) {int[] arr = new int[10];for(int i=0;i<10;i++){arr[i] = new Random().nextInt(10);}System.out.println(Arrays.toString(arr));System.out.println("**********选择排序开始:**********");long startTime = System.currentTimeMillis();for(int j = 0;j<arr.length-1;j++){int min = j;for(int k=j+1;k<arr.length;k++){if(arr[k]<arr[min]){min = k;}}if(j!=min){int t = arr[j];arr[j] = arr[min];arr[min] = t;}System.out.println(Arrays.toString(arr));}System.out.println("**********选择排序结束:**********");System.out.println(Arrays.toString(arr));long endTime = System.currentTimeMillis();    System.out.println("排序耗时:"+(endTime-startTime));}}

运行结果:


原创粉丝点击