一個很有意思的排序算法

這個排序算法比一般的冒泡,插入排序算法都要快,思想是這樣的(從小到大),從第2個數開始,用前面的數跟他比較,比他大就交換。這樣相對與插入排序比較的次數沒減少,但是在交換兩個數的方式上更優化,整體是比插入,和冒泡更好的排序方法。

package com.hong.bean;

public class test {
	 public void testInsertArithmetic(){
	        int[] array = new int[5];
	        array[0] = 5;
	        array[1] = 2;
	        array[2] = 3;
	        array[3] = 4;
	        array[4] = 1;
	        insertArithmetic(array);
	      
	        for (int i=0;i<array.length;i++) {
	            System.out.println("array[" + i + "]:" + array[i]);
	        }
	    }
	 public void testInsertArithmetic1(){
	        int[] array = new int[5];
	        array[0] = 5;
	        array[1] = 2;
	        array[2] = 3;
	        array[3] = 4;
	        array[4] = 1;

	        charu(array);
	        for (int i=0;i<array.length;i++) {
	            System.out.println("array[" + i + "]:" + array[i]);
	        }
	    }
	   public void insertArithmetic(int[] array){
	        int exeCount = 0;
	        for(int i=1;i<array.length;i++){
	            int tempInt = array[i];
	            int j;
	            for(j=i-1;j>=0&&tempInt<array[j];j--){
	                array[j+1] = array[j];
	                exeCount++;
	            }

	            array[j+1] = tempInt;
	        }

	        System.out.println("=========執行次數:"+exeCount);
	    } 
//插入排序的方式
public void charu(int[] array)
{   int a;
	int exeCount=0;
	for(int i=0;i<array.length-1;i++)
	{
		for(int j=i+1;j<array.length;j++)
		{
			if(array[i]>array[j]){
				a=array[i];
				array[i]=array[j];
				array[j]=a;
			exeCount++;
			}
		}
		
	}
	System.out.println("=========執行次數:"+exeCount);
}
     public static void main(String[] args) {
    	 test t=new test();
    	 t.testInsertArithmetic();
    	 t.testInsertArithmetic1();
    	 
	}

}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章