package com.hgc.test;
/*
数据排序测试
*/
public class Arraysort
{
public static void main(String[] args){
int[] A={8,5,4,3,2,1,6,9,7};
System.out.println("*******冒泡排序******");
maopao(A);
System.out.println();
System.out.println("*******选择排序******");
xuanze(A);
System.out.println();
System.out.println("*******插入排序******");
charu(A);
}
//冒泡排序
public static void maopao(int[] x){
for(int i=0;i<x.length;i++){
for(int j=i+1;j<x.length;j++){
if(x[i]>x[j]){
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for(int i=0;i<x.length;i++){
System.out.print(x[i]+" ");
}
}
//选择排序
public static void xuanze(int[] x){
for(int i=0;i<x.length;i++){
int lowerIndex =i;
for(int j=i+1;j<x.length;j++){
//找出最小的索引
if(x[j]<x[lowerIndex]){
lowerIndex = j;
}
}
//交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for(int i=0;i<x.length;i++){
System.out.print(x[i]+" ");
}
}
//插入排序
public static void charu(int[] x){
for(int i=1;i<x.length;i++){ //i从一开始,因为第一个数已经是排好序的
for(int j=i;j>0;j--){
if(x[j]<x[j-1]){
int temp=x[j];
x[j]=x[j-1];
x[j-1]=temp;
}
}
}
for(int i:x){
System.out.print(i+" ");
}
}
//希尔排序
public static void xier(int[] x){
//分组
for(int increment = x.length/2;increment>0;increment/=2){
//每个组内排序
for(int i= increment;i<x.length;i++){
int temp=x[i];
int j =0;
for(j=i;j>=increment;j-=increment){
if(temp<x[j-increment]){
x[j]=x[j-increment];
}else{
break;
}
}
x[j]=temp;
}
}
for(int i:x){
System.out.print(i+" ");
}
}
}