排序优化

//排序减少对堆内存的访问以实现优化

package com.hz.io.demo1;

public class IOTest {
static File f = new File("a.txt");
public static void main(String[] args) {
long start = System.currentTimeMillis();
m5(20000);
long stop = System.currentTimeMillis();
System.out.println(" ===");
System.out.println(stop-start);//872 895 897 //186 202 194
}
//排序优化后
static void m5(int n){
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i] = (int) (n*Math.random());//随机生成n个元素的数组
System.out.print(arr[i]+" * ");
}
//选择排序优化:减少堆内存的访问
for(int i=0; i<arr.length-1; i++){
int num = arr[i];
int index = i;
for(int j=i+1; j<arr.length; j++){
if(num>arr[j]){
num=arr[j];
index=j;
}
}
if(index!=i){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
//遍历数组
for(int x:arr){
System.out.print(x+"-");
}
}
static void m4(int n){//排序时间测试
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i] = (int) (n*Math.random());//随机生成n个元素的数组
System.out.print(arr[i]+" * ");
}
//选择排序
for(int i=0; i<arr.length-1; i++){
for(int j=i+1; j<arr.length; j++){
if(arr[i]>arr[j]){
arr[i]^=arr[j];
arr[j]^=arr[i];
arr[i]^=arr[j];
}
}
}
//遍历数组
for(int x:arr){
System.out.print(x+"-");
}
}

}//main

原文地址:https://www.cnblogs.com/geryhz/p/14335949.html