java记录 - 选择排序

选择排序

import java.text.SimpleDateFormat; 
import java.util.Arrays;
import java.util.Date;
//选择排序
public class SelectSort {
	public static void main(String[] args) {
	
		//创建要给 80000 个的随机的数组
		int[] arr = new int[200000];
		for (int i = 0; i < 200000; i++) {
			arr[i] = (int) (Math.random() * 8000000); // 生成一个[0, 8000000) 数
		}

		System.out.println("排序前");
		
		Date data1 = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		String date1Str = simpleDateFormat.format(data1);
		System.out.println("排序前的时间是=" + date1Str);

		selectSort(arr);//20w数据15秒

		Date data2 = new Date();
		String date2Str = simpleDateFormat.format(data2); 
		System.out.println("排序后的时间是=" + date2Str);


	}

	//选择排序
	public static void selectSort(int[] arr) {

		//选择排序时间复杂度是 O(n^2) 
		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],  即交换
			if (minIndex != i) { 
				arr[minIndex] = arr[i]; 
				arr[i] = min;
			}

		}
	}
}

猜你喜欢

转载自blog.csdn.net/bell_love/article/details/106319578