选择排序:
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; } } }