這個排序算法比一般的冒泡,插入排序算法都要快,思想是這樣的(從小到大),從第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();
}
}