Java算法之排序

2019-12-12  本文已影响0人  秋波未央

暂时整理了直接插入排序、冒泡和希尔

不说废话,直接上代码!

package paiXu;

public class Jihe {

//直接插入排序

public static void insertSort(int[] array){

int len=array.length;//数据长度

if(array!=null){

for(int i=1;i<len;i++){

int temp=array[i];//存放即将要插入的数据

int j=i;

if(array[j-1]>temp){//将temp从后往前依此比较

while(j>=1&&array[j-1]>temp){//temp大于最后一个数时

array[j]=array[j-1];//

j--;

}

}

array[j]=temp;

}

}

}

//冒泡排序

public static void bubbleSort(int[] a){

int len=a.length;//数组长度

int temp;//辅助

for(int i=len-1;i>=0;i--){

for(int j=0;j<i;j++){//从前往后依次比较

if(a[j]>a[j+1]){//前一个比后一个大,就进行交换

temp=a[j+1];

a[j+1]=a[j];

a[j]=temp;

}

}

}

    }

//希尔排序

public static void shellSort(int[] a){

int len=a.length;//数组长度

int temp;//辅助空间

int i,j,h;

for(h=len/2;h>0;h=h/2){//h表示步长,从len/2一直变化到1

for(i=h;i<len;i++){//按步长组组数,对每个组进行排序

temp=a[i];

for(j=i-h;j>=0;j=j-h){//每趟排序,根据步长将待排序列分成若干个子序列

if(temp<a[j]){

a[j+h]=a[j];

}else{

break;

}

}

a[j+h]=temp;

}

}

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] array={5,4,3,7,6,8,10,1};

System.out.println("原数组:");

for(int a1:array){

System.out.print(a1+" ");

}

System.out.println();

insertSort(array);

System.out.println("插入排序后:");

for(int a1:array){

System.out.print(a1+" ");

}

System.out.println();

bubbleSort(array);

System.out.println("冒泡排序后:");

for(int a1:array){

System.out.print(a1+" ");

}

System.out.println();

shellSort(array);

System.out.println("希尔排序后:");

for(int a1:array){

System.out.print(a1+" ");

}

}

}

上一篇 下一篇

猜你喜欢

热点阅读