import java.util.Arrays;
//冒泡法排序
public class test3 {
public static int[] bubblesort(int[] array) {
if(array.length==0)
return array;
for(int i=0;i<array.length;i++) {
for(int j=0;j<array.length-1-i;j++) {
if (array[j+1]<array[j]) {
int temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
return array;
}
//选择
public static int[] chosesort(int[] array){
if(array.length==0)
return array;
for(int i=0;i<array.length;i++) {
int minIndex=i;
for(int j=i;j<array.length;j++) {
if(array[j]<array[minIndex])
minIndex=j;
}
int temp=array[minIndex];
array[minIndex]=array[i];
array[i]=temp;
}
return array;
}
//插入排序
public static int[] insertionsort(int[] array){
if(array.length==0)
return array;
int current;
for (int i=0;i<array.length-1;i++) {
current=array[i+1];
int preIndex=i;
while(preIndex>=0 && array[preIndex]>current) {
array[preIndex+1]=array[preIndex];
preIndex--;
}
array[preIndex+1]=current;
}
return array;
}
//希尔排序
public static int[] shellsort(int[] array){
int len=array.length;
int temp,gap=len/2;
while(gap>0) {
for(int i=gap;i<len;i++) {
temp=array[i];
int preIndex=i-gap;
while(preIndex>=0 && array[preIndex]>temp) {
array[preIndex+gap]=array[preIndex];
preIndex-=gap;
}
array[preIndex+gap]=temp;
}
gap/=2;
}
return array;
}
//归并排序
public static int[] mergesort(int[] array){
if(array.length<2)
return array;
int mid=array.length/2;
int[] left=Arrays.copyOfRange(array, 0, mid);
int[] right=Arrays.copyOfRange(array, mid, array.length);
return merge(mergesort(left),mergesort(right));
}
public static int[] merge(int[] left,int[] right) {
int [] result=new int[left.length+right.length];
for(int index=0,i=0,j=0;index<result.length;index++)
{
if(i>=left.length)
result[index]=right[j++];//左边的数列已经遍历完了,就放下右边的数
else if(j>=right.length)
result[index]=left[i++];//右边的数列以及遍历完了,那就放下左边的数
else if(left[i]>right[j])
result[index]=right[j++];//result[index]=right[j],之后j自增
else
result[index]=left[i++];//result[index]=left[i],之后i自增
}
return result;
}
public static void main(String args[]) {
int Array[]=new int[10];//动态数组
for(int i=0;i<Array.length;i++) {
Array[i]=(int) (100*Math.random());
}
System.out.println("排序前的情况");
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
System.out.println("冒泡法排序后的情况");
Array=bubblesort(Array);
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
for(int i=0;i<Array.length;i++) {
Array[i]=(int) (100*Math.random());
}
System.out.println("排序前的情况");
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
System.out.println("选择法排序后的情况");
Array=chosesort(Array);
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
for(int i=0;i<Array.length;i++) {
Array[i]=(int) (100*Math.random());
}
System.out.println("排序前的情况");
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
System.out.println("插入法排序后的情况");
Array=insertionsort(Array);
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
for(int i=0;i<Array.length;i++) {
Array[i]=(int) (100*Math.random());
}
System.out.println("排序前的情况");
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
System.out.println("希尔法排序后的情况");
Array=shellsort(Array);
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
for(int i=0;i<Array.length;i++) {
Array[i]=(int) (100*Math.random());
}
System.out.println("排序前的情况");
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
System.out.println("归并法排序后的情况");
Array=mergesort(Array);
for(int j=0;j<Array.length;j++) {
System.out.println(Array[j]);
}
}
}