/**
* 日期:2017.7.27
* 作者:小孟鱼
* 功能:演示各种排序
*/
package com.test4;
import java.util.Calendar;
public class Paixu {
public static void main(String[] args) {
int len=200000;
int[] arr1=new int[len] ;
//如何构建无序数列还是100000的
for(int i=0;i<len;i++) {
//让程序随机产生一个1-100000的数
//Math.radom()会产生一个0-1;
int t=(int)( Math.random()*10000);//Math里面有个random函数
arr1[i]=t;
}
//int arr[]= {1,6,0,-1,9,-100};
//创建一个对象
// Bubble bubble=new Bubble();
// bubble.sort(arr);
// int a=12;
// bubble.test(a);
// System.out.println("a="+a);//输出的结果肯定是12
//创建一个Select类
Select select=new Select();
//在排序前打印系统时间
Calendar cal=Calendar.getInstance();
//排序前打印一个时间
System.out.println("排序前"+cal.getTime());
select.sort(arr1);
//排序后打印一个时间
cal=Calendar.getInstance();//重新的得到实例(因为getIstence是单态的)
System.out.println("排序后"+cal.getTime());
//输出结果
// for(int i=0;i<arr1.length;i++) {
// System.out.println(arr1[i]+" ");
// }
}
}
class Bubble{
//测试
public void test(int a){
a++;
}
//排序方法 涉及到引用传递,把数组传递给函数
public void sort(int arr[])
{
int temp=0;
//排序开始
//外层循环,他决定一共走几趟
for(int i=0;i<arr.length-1;i++) {
//内层循环开始逐一比较,如果发现
//前一个数比后一个数大则交换位置
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1]) {
//换位
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
//创建一个选择排序类
class Select{
//选择排序
public void sort(int arr[]) {
//我认为第一个数就是最小的
int temp=0;
for(int j=0;j<arr.length-1;j++) {
int min=arr[j];
//标记一下最小值
int minIndex=j;
//这个for循环是说 我认为从第一个最小数的下一个数在比较
for(int k=j+1;k<arr.length;k++) {
if(min>arr[k]) {
//做一下修改
min=arr[k];
minIndex=k;
}
}
//当退出第二个for循环就找到这次的最小值进行换位
temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
}
}