package com.java.test;
import java.util.Arrays;
public class ArraySort{
static int array[] = {34,87,45,15,68,37,85,69,92};
public static void main(String args[]){
System.out.println("快速排序:\n"+arrayValue(quickSort(array)));
System.out.println("冒泡排序:\n"+arrayValue(bubbleSort(array)));
System.out.println("选择排序:\n"+arrayValue(selectSort(array)));
System.out.println("插入排序:\n"+arrayValue(insertSort(array)));
}
public static String arrayValue(int[] array){
String str = new String();
if(array!=null){
for(int i=0;i<array.length;i++){
str += "array["+i+"]:"+array[i]+"\n";
}
}
return str;
}
/**
* 快速排序 利用Arrays.sort()方法直接排序
* @param array
* @return
*/
public static int[] quickSort(int[] array){
Arrays.sort(array);
return array;
}
/**
* 冒泡排序,第一个与后面的每个值进行比较,最后第一个数值为最小
* 依此而行,第二个与其他值比较,直到倒数第二个与最后一个值比较
* @param array
* @return
*/
public static int[] bubbleSort(int[] array){
for(int i=0;i<array.length-1;i++){
for(int j=i+1;j<array.length;j++){
if (array[i]>array[j]){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
return array;
}
/**
* 选择排序,看起来有点像冒泡排序,但是逻辑不通
* 第一次是把所有的数值进行比较对ayyay[0]进行赋值,即是把第一个值与最小的值进行交换
* 依此而行,第n次是把第n-1个值与其余的最小值进行交换
* @param array
* @return
*/
public static int[] selectSort(int[] array){
for (int i=0;i<array.length-1 ;i++ ){
int min=i;
for (int j=i+1;j<array.length ;j++ ){
if (array[min]>array[j]){
min=j;
}
}
if (min!=i){
int temp=array[i];
array[i]=array[min];
array[min]=temp;
}
}
return array;
}
/**
* j插入排序,第一次对前两个进行排序,n次对前n+1个进行排序
* @param array
* @return
*/
public static int[] insertSort(int[] array){
for(int i=1;i<array.length;i++){
for(int j=i;j>0;j--){
if (array[j]<array[j-1]){
int temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
else break;
}
}
return array;
}
}