排序算法——选择排序法(Select Sorting)

选择排序(Select Sorting)

基本介绍

​ 选择排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的

选择排序思想

​ 选择排序(Select Sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选出最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,···,第i次从arr[i-1]~arr[n-1]中选取最小值与arr[i-1]交换,总共哦通过 n-1 次,得到一个从小到大排列的有序序列

规则

  1. 选择排序一共有 数组大小-1 轮排序
  2. 每一轮排序,又是一个循环
  3. 先假定当前这个数是最小数
  4. 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
  5. 当遍历到数组的最后时,就得到本轮最小数和下标
  6. 交换

代码示例

package com.crisp.Sort;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class SelectSort {
    public static void main(String[] args) {
//        int[] arr = {3,5,1,2,4,0,-1,9,8,7,0};
//        print(arr);
//        Select(arr);
//        print(arr);

        //创建有100000个数据的数组
        int[] arr = new int[100000];
        for(int i = 0; i < arr.length; ++i){
            arr[i] = (int)(Math.random() * 100000);//生成一个[0,100000)的随机数
        }
        System.out.printf("原始数组为:");
        print(arr);
        Date data1 = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String data1Str = simpleDateFormat.format(data1);
        Select(arr);
        Date data2 = new Date();
        String data2Str = simpleDateFormat.format(data2);
        print(arr);
        System.out.printf("排序过后数组为:");
        System.out.printf("排序前的时间是:%s\n",data1Str);
        System.out.printf("排序后的时间是:%s\n",data2Str);
    }

    //打印输出
    public static void print(int[] arr){
        System.out.println(Arrays.toString(arr));
    }

    //选择排序法 从小到大
    public static void Select(int[] arr){
        int minIndex;
        int temp;
        for(int i = 0; i < arr.length-1; ++i){
            minIndex = i;
            for(int j = i; j < arr.length-1; ++j){
                if(arr[minIndex] > arr[j+1]){
                    minIndex = j+1;
                }
            }
            temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}

你可能感兴趣的:(数据结构与算法,排序算法,算法,数据结构)