选择排序和插入排序

选择排序:

package com.dai.sort;

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

public class SelectSort {

    public static void main(String[] args) {
        /*int[] arr = {101, 34, 119, 1};
        selectSort(arr);
        System.out.println(Arrays.toString(arr));*/
        //测试选择排序的速度,8w个数据
        int[] arr = new int[80000]; 
        for(int i=0; i<80000; i++) {
            arr[i] = (int)(Math.random()*8000000);
        }
        Date date1 = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date1String = simpleDateFormat.format(date1);
        System.out.println("排序前的时间为:" + date1String);
        selectSort(arr);
        Date date2 = new Date();
        String date2String = simpleDateFormat.format(date2);
        System.out.println("排序后的时间为:" + date2String);

    }
    //选择排序
    public static void selectSort(int[] arr) {
        //逐步推导
        //第一轮 原始数组:101,34,119,1
        for(int i=0;i<arr.length-1;i++) {
            int minIndex = i;
            int min = arr[i];
            for(int j=i+1; j<arr.length;j++) {
                if(min>arr[j]) {
                    min = arr[j];
                    minIndex = j;
                }
            }
        //最小值放在arr[0],即交换
        arr[minIndex] = arr[i];
        arr[i] = min;
        }
    }

}

插入排序:

package com.dai.sort;

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

public class InsertSort {

    public static void main(String[] args) {
        /*int[] arr = {101, 34, 119, 1};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    */
        int[] arr = new int[80000]; 
        for(int i=0; i<80000; i++) {
            arr[i] = (int)(Math.random()*8000000);
        }
        Date date1 = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date1String = simpleDateFormat.format(date1);
        System.out.println("排序前的时间为:" + date1String);
        insertSort(arr);
        Date date2 = new Date();
        String date2String = simpleDateFormat.format(date2);
        System.out.println("排序后的时间为:" + date2String);
    }
    public static void insertSort(int[] arr) {
        //定义待插入的数
        int insertVal = 0;
        int insertIndex = 0;
        for(int i=1;i<arr.length;i++) {
            insertVal = arr[i];
            insertIndex = i-1;
            //给insertVal找到插入位置
            while(insertIndex >= 0 && insertVal<arr[insertIndex]) {
                arr[insertIndex+1] = arr[insertIndex];
                insertIndex--;
            }
            //退出循环,则找到位置
            if(insertIndex+1 != i)
                arr[insertIndex+1] = insertVal;
        }
    }

}
原文地址:https://www.cnblogs.com/shengtudai/p/14390929.html