package com.算法.排序;
public class 冒泡排序 {
public static void main(String[] args){
int[] array = new int[100000];
for(int i=0;i<array.length;i++){
array[i] = (int)(Math.random()*200000);
}
long t1 = System.currentTimeMillis();
array = sort01(array);
long t2 = System.currentTimeMillis();
for(int i=0,j=1;i<array.length;j++,i++){
System.out.print(array[i]+" ");
if(j%10==0){
System.out.println();
}
}
System.out.println("冒泡排序算法耗費"+(t2-t1)+"毫秒");
}
public static int[] sort01(int[] array){
boolean flag = false ;
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
flag=true;
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
if(!flag){
break;
}else{
flag=false;
}
}
return array;
}
}
package com.算法.排序;
public class 選擇排序 {
public static void main(String[] args){
int[] array = new int[100000];
for(int i=0;i<array.length;i++){
array[i]=(int)(Math.random()*200000);
}
long t1 =System.currentTimeMillis();
array = sort02(array);
long t2 =System.currentTimeMillis();
for(int i=0,j=1;i<array.length;j++,i++){
System.out.print(array[i]+" ");
if(j%10==0){
System.out.println();
}
}
System.out.println("選擇排序算法耗費"+(t2-t1)+"毫秒");
}
public static int[] sort02(int[] array){
for(int i=0;i<array.length-1;i++){
int min = array[i];
int index = i;
for(int j=i+1;j<array.length;j++){
if(min>array[j]){
min=array[j];
index=j;
}
}
if(i!=index){
array[index] = array[i];
array[i] = min;
}
}
return array;
}
}
package com.算法.排序;
public class 插入排序 {
public static void main(String[] args) {
int[] array = new int[100000];
for(int i=0;i<array.length;i++){
array[i]=(int)(Math.random()*200000);
}
long t1 = System.currentTimeMillis();
array = sort03(array);
long t2 = System.currentTimeMillis();
for(int i=0,j=1;i<array.length;j++,i++){
System.out.print(array[i]+" ");
if(j%10==0){
System.out.println();
}
}
System.out.println("插入排序算法耗費"+(t2-t1)+"毫秒");
}
public static int[] sort03(int[] array){
for(int i=1;i<array.length;i++){
int index = i-1;
int data = array[i];
while(index>=0&&data<array[index]){
array[index+1]=array[index];
index--;
}
array[index+1]=data;
}
return array;
}
}
package com.算法.排序;
public class 希爾排序 {
public static void main(String[] args){
int[] array = new int[100000];
for(int i=0;i<array.length;i++){
array[i] = (int) (Math.random()*200000);
}
long t1 = System.currentTimeMillis();
array=sort04(array);
long t2 = System.currentTimeMillis();
for(int i=0,j=1;i<array.length;j++,i++){
System.out.print(array[i]+" ");
if(j%10==0){
System.out.println();
}
}
System.out.println("希爾排序算法耗費"+(t2-t1)+"毫秒");
}
public static int[] sort04(int[] array){
for(int i=array.length/2;i>0;i/=2){
for(int j=i;j<array.length;j++){
int index = j-i;
int value = array[j];
while(index>=0&&value<array[index]){
array[index+i] = array[index];
index -= i;
}
array[index+i] = value;
}
}
return array;
}
}
package com.算法.排序;
public class 快速排序 {
public static void main(String[] args) {
int[] array = new int[100000];
for(int i=0;i<array.length;i++){
array[i]=(int)(Math.random()*200000);
}
long t1 = System.currentTimeMillis();
array=sort05(array,0,array.length-1);
long t2 = System.currentTimeMillis();
for(int i=0,j=1;i<array.length;j++,i++){
System.out.print(array[i]+" ");
if(j%10==0){
System.out.println();
}
}
System.out.println("快速排序算法耗費"+(t2-t1)+"毫秒");
}
public static int[] sort05(int[] array,int head,int tail){
int temp = array[head];
int i = head ;
int j = tail ;
while(i!=j){
while(i<j&&array[j]>=temp){
j--;
}
while(i<j&&array[i]<=temp){
i++;
}
if(i<j){
int t = array[j] ;
array[j] = array[i];
array[i] = t;
}
}
array[head] = array[i];
array[i] = temp ;
if(i-1>head) array=sort05(array,head,i-1);
if(j+1<tail) array=sort05(array,j+1,tail);
return array;
}
}