時間久了就忘了,把以前的**拿出來整理一下
插入排序—
直接插入排序(straight insertion sort)
結構圖
system.out.println("初始值:");
obj.print(a);
obj.insertsort(a);
system.out.println("\n排序後:");
obj.print(a);
}public
void
print(int a)
}public
void
insertsort(int a)
a[j+1]=x;//插入}}
}}時間複雜度:o(n^2)
希爾排序(shell`s sort)
. 基本思想
public
static
void
main(string args) ;
shellsort obj=new shellsort();
system.out.println("初始值:");
obj.print(a);
obj.shellsort(a);
system.out.println("\n排序後:");
obj.print(a);
}private
void
shellsort(int a)
}private
void
shellinsertsort(int a, int dk)
a[j+dk]=x;//插入}}
}public
void
print(int a)
}
簡單選擇排序
public
static
void
main(string args) ;
******selectsort obj=new ******selectsort();
system.out.println("初始值:");
obj.print(a);
obj.selectsort(a);
system.out.println("\n排序後:");
obj.print(a);
}private
void
selectsort(int a)
swap(a,k,i);//把最小值放到它該放的位置上}}
public
void
print(int a)
}public
void
swap(int data, int i, int j)
//在不建立物件的基礎上
data[i] = data[i] + data[j];
data[j] = data[i] - data[j];
data[i] = data[i] - data[j];`這裡寫**片`
}
時間複雜度:
o(n2)
氣泡排序
private static int a = ;
public static void main(string args)
}} for (int i= 0;i}
時間複雜度
o(n2)
快速排序
int a = ;
//快速排序no1
private
static
void
sortkuaipaistep1(int l , int r)
int index = sortkuaipaistep2(l, r);
sortkuaipaistep1(l , index - 1);
sortkuaipaistep1(index + 1 , r);
}//快速排序no2
private
static
intsortkuaipaistep2(int l , int r)
if(l < r)
while(l < r && x < a[l])
if(l < r)
a[l] = x;
return l;
}return l;
}
時間複雜度
最好 o(n*log2n)
平均 o(n*log2n)
最壞 o(n2)
還有三種排序沒有會
堆排序
歸併排序
基數排序
8種排序演算法
學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說...
8種常見排序
堆排序 二叉樹模型 include 交換函式 void swap int a,int i,int j 列印陣列 void printa int a,int len printf n void heapify int a int i,int len void heapsort int a,int le...
8種排序演算法
1.選擇排序 兩層迴圈巢狀,0到n 1選出最小的,與第0個交換,縮小集合為1到n 1,選出最小的,與第乙個交換 時間複雜度 o n2 空間複雜度 因為中間只增加了兩個新變數,儲存最小值和下標,所以空間複雜度為o 1 當陣列為已排序狀態時,仍需要n次比較,最好的情況仍需要o n2 public sta...