//创建两个数组并进行初始化
final int N=50000;
int[] nums1=new int[N];
int[] nums2=new int[N];
for (int i = 0; i < nums1.length; i++) {
nums1[i]=(int)(Math.random()*50000);
nums2[i]=(int)(Math.random()*50000);
}
int temp=0;
//冒泡排序
long startTime=System.currentTimeMillis();//记录下程序运行的开始时间
for (int i = 0; i < nums1.length-1; i++) {//两两交换的话只需要交换数组长度-1次即可
for (int j = 0; j < nums1.length-1-i; j++) {//每一次经过一次外层循环则内层循环就少一次即是nums1.length-1-i
if(nums1[j]>nums1[j+1]) {
temp=nums1[j];
nums1[j]=nums1[j+1];
nums1[j+1]=temp;}
}
}
long endTime=System.currentTimeMillis();//记录下程序运行的结束时间
for (int i = 0; i < nums1.length; i++) {
System.out.println(nums1[i]);
}
System.out.println("冒泡排序所用时间为"+(endTime-startTime)+"毫秒");
//选择排序
startTime=System.currentTimeMillis();
for (int i = 0; i < nums2.length; i++) {//外层循环控制选择次数
int min=nums2[i];//假定外层循环此次的值为最小值
int minIndex=i;//记录最值的索引
for (int j = i+1; j < nums2.length; j++) {//从最小值之后进行判断是否有比其还小的值
if(nums2[j]<min) {
min=nums2[j];
minIndex=j;//记录下最小值的索引,
}
}
//等到内层循环结束后进行交换此时取到的是最小值
temp=nums2[i];
nums2[i]=nums2[minIndex];
nums2[minIndex]=temp;
}
endTime=System.currentTimeMillis();
for (int i = 0; i < nums2.length; i++) {
System.out.println(nums2[i]);
}
System.out.println("选择排序所用时间为"+(endTime-startTime)+"毫秒");