1 package com.test4; 2 import java.util.*; //Calendar 显示时间 3 /** 4 * @author qingfeng 5 * 功能:冒泡排序 6 */ 7 public class Bubble { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 //int arr[] = {10,1,-20,89,-1,78,-45}; 12 13 //随机产生大量数据 14 15 int len = 50000; 16 int[] arr = new int[len]; 17 18 19 for(int i=0; i<len; i++) 20 { 21 //产生1到1000的数 22 arr[i] = (int)(Math.random()*1000); 23 } 24 /* 25 for(int i=0; i<len; i++) 26 { 27 System.out.print(arr[i]+" "); 28 } 29 System.out.println(); 30 */ 31 BubbleSort bs = new BubbleSort(); 32 //显示排序前的时间 33 Calendar time = Calendar.getInstance();//获取时间实例 34 System.out.println("排序前的时间为:"+time.getTime());//50000个数排序4秒 35 bs.sort(arr); 36 37 /* 38 SelectSort ss = new SelectSort(); //50000个数排序1秒 39 ss.sort(arr); 40 */ 41 /* 42 int a = 1; 43 bs.test(a); 44 System.out.println("a的值为:"+a);//a的值为1 并不是2 因为是值传递 45 */ 46 47 /* 48 System.out.println("-----------------------------"); 49 for(int i=0; i<arr.length; i++) 50 { 51 System.out.print(arr[i]+" "); 52 } 53 System.out.println(); 54 */ 55 //显示排序前的时间 56 Calendar time2 = Calendar.getInstance();//获取时间实例 57 System.out.println("排序后的时间为:"+time2.getTime()); 58 } 59 } 60 //冒泡排序 61 class BubbleSort 62 { 63 public void test(int a)//值传递 64 { 65 a++; 66 } 67 public void sort(int arr[]) //引用传递(复合类型) 68 { 69 int temp; 70 71 //冒泡排序 72 //外层循环:n个数 n-1趟排序 73 for(int i=0; i<arr.length-1; i++) 74 { 75 //内层循环:若前比后打则交换 (每趟比前一趟少排一个数:所以"-i") 76 for(int j=0; j<arr.length-1-i; j++) 77 { 78 if(arr[j]>arr[j+1]) 79 { 80 temp = arr[j+1]; 81 arr[j+1] = arr[j]; 82 arr[j] = temp; 83 } 84 } 85 } 86 } 87 } 88 //选择排序 89 class SelectSort 90 { 91 public void sort(int arr[])//引用传递 92 { 93 //外层循环:n个数 n-1趟排序 最后一个数不要再次排序 94 for(int i=0; i<arr.length-1; i++) 95 { 96 int min=arr[i]; 97 int minIndex = i; 98 99 int j; 100 int temp; 101 //内层循环:选择min值 102 for(j=i+1; j<arr.length; j++) 103 { 104 if(min > arr[j]) 105 { 106 min = arr[j]; 107 minIndex = j; 108 } 109 } 110 //最小值和每趟第一个值交换 111 temp = arr[i]; 112 arr[i] = arr[minIndex]; 113 arr[minIndex] = temp; 114 } 115 } 116 117 }