java 排序


public class Sort {

/**
* 冒泡排序:比较两个数,如果左边大于右边,交换位置;如果左边小于等于右边,位置不变;
* 向右移动一个位置,比较下面两个数;每一次将最大的数排在了最右边,形象的像冒泡。
*
*/

public static void bubbleSort(int[] b){

for (int i = 0; i < b.length-1; i++) {
for (int j = 0; j < b.length-i-1; j++) {
if(b[j]>b[j+1]){
int temp ;
temp=b[j];
b[j+1]=temp;
b[j]=b[j+1];
}
}
}
}

/**选择排序:将所有数据中挑出最小的,放在0号位置;此时最左边为有序数列,
* 不需要交换位置(同冒泡相反,冒泡为右边是有序数列);再次从一号位置开
* 始,寻找最小的数,然后和一号交换。。。持续下去。
*
* @param s
*/


public static void selectSort(int[] s){
for (int i = 0; i < s.length; i++) {

for (int j = i+1; j < s.length; j++) {

if(s[i] > s[j]){
int temp = s[i];
s[i]=s[j];
s[j]=temp;
}

}
}
}




/**
*
*  将n个元素的数列分为已有序和无序两个部分,每次处理就是将无序数列的第一个元素
* 与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
* @param in
*/
public static void insertSort(int[] in){
  for (int i = 0; i < in.length; i++) {
for (int j = i; j >0; j--) {

if(in[j]<in[j-1]){
int temp = in[j];
in[j]=in[j-1];
in[j-1]=temp;
}else{
break;
}


}
}

}


    public static void shellSort(int s[]){ 
            int step=s.length%2==1&&s.length!=1?s.length/2+1:s.length/2; 
        while (step!=0) { 
            for (int i = 0; i < s.length-step; i++) { 
                for (int j = i; j < s.length-step; j+=step) { 
                    if (s[j]>s[j+step]) { 
                        int temp=s[j]; 
                        s[j]=s[j+step]; 
                        s[j+step]=temp; 
                    } 
                } 
            } 
            step=step%2==1&&step!=1?step/2+1:step/2; 
        } 
    }
   
   

public static void print(int[] x){
for (int i = 0; i < x.length; i++) {

System.out.print(x[i]+" ");
}
System.out.println(" ");
}

public static void main(String[] args) {

int[] a={1,4,7,12,0,14};
bubbleSort(a);
    print(a);
   
    selectSort(a);
    print(a);
   
insertSort(a);
print (a);

shellSort(a);
print(a);
}



}

你可能感兴趣的:(java)