java中的類呼叫!

2021-06-21 00:08:40 字數 2326 閱讀 8458

本人介紹的排序演算法主要有:插入排序,選擇排序,氣泡排序,快速排序,堆排序,歸併排序,希爾排序,二叉樹排序,桶排序,基數排序(後兩者為非比較排序,前面的為比較排序)。

排序的穩定性和複雜度:

不穩定:

選擇排序(selection sort)- o(n2)

快速排序(quicksort)- o(nlogn) 平均時間, o(n2) 最壞情況; 對於大的、亂序串列一般認為是最快的已知排序

堆排序 (heapsort)- o(nlogn)

希爾排序 (shell sort)- o(nlogn)

基數排序(radix sort)- o(n·k); 需要 o(n) 額外儲存空間 (k為特徵個數)

穩定:插入排序(insertion sort)- o(n2)

氣泡排序(bubble sort) - o(n2)

歸併排序 (merge sort)- o(nlogn); 需要 o(n) 額外儲存空間

二叉樹排序(binary tree sort) - o(nlogn); 需要 o(n) 額外儲存空間

桶排序 (bucket sort)- o(n); 需要 o(k) 額外儲存空間

1、插入排序

對於乙個序列,當記錄值是第i個元素時,前面i-1個元素已經排好序了,那麼這個記錄值從第i-1個元素一直往前比較,找到屬於它的位置後插進去。

1 #include

2 using namespace std;

4 int main()

5 ;7 int n=sizeof(a)/4;

8 for(int i=0; i

9 14 cout 《 a[0] ;

15 for(int i=1; i

16 cout 《endl;

17 return 0;

18 }

2、選擇排序

對於乙個序列,前面i-1個元素都是已經排好序的,那麼從第i到第n個元素,找到最小值的那個元素,如果下標不是i,則讓第i個元素和那個最小的元素位置互換。

1 #include

2 using namespace std;

4 int main()

5 ;7 int n=sizeof(a)/4;

8 for(int i=0; i

9 15 if(pos!=-1) swap(a[i],a[pos]);

16 }

17 cout 《 a[0] ;

18 for(int i=1; i

19 cout 《endl;

20 return 0;

21 }

3、氣泡排序

氣泡排序顧名思義就是從最後往前兩個元素開始進行兩兩比較,如果a[i]小於a[i-1],那麼讓他們互換位置,每比較一輪必有乙個最小的元素冒泡到這些所比較元素的前面。

1 #include

2 using namespace std;

4 int main()

5 ;7 int n=sizeof(a)/4;

8 for(int i=0; i

9 13 cout 《 a[0] ;

14 for(int i=1; i

15 cout 《endl;

16 return 0;

17 }

4、快速排序

基本思想就是取乙個數作為中間數(一般是取第乙個數作為中間數),小於它的都放到左邊,大於它的都放到右邊,再對每一邊利用同樣的思想進行處理。

1 #include

2 using namespace std;

4 void quicksort(int *a, int l, int r)

5 16 a[i]=tmp;

17 quicksort(a,l,i-1);

18 quicksort(a,i+1,r);

19 }

21 int main()

22 ;

24 int n=sizeof(a)/4;

25 quicksort(a,0,n-1);

26 cout 《 a[0] ;

27 for(int i=1; i

28 cout 《endl;

29 return 0;

30 }

5、堆排序

堆排序其實要利用到二叉堆,二叉堆其實完全可以理解為一顆有限制的完全二叉樹。

二叉堆的定義:二叉堆可以分為最大堆和最小堆。最大堆為對於所有節點它的左右節點權值一定比它小,最小堆為對於所有節點它的左右節點權值一定比它大。

二叉堆的插入:將乙個序列下表從0開始乙個乙個往堆裡插入,因為滿足完全二叉樹性質,所以這麼做是可行的。對於插入的第i個數,那麼從下往上,它的父親節點為(i-1)/2個數,再根據二叉堆的性質進行調整。

java中類的繼承呼叫順序例子

定義父類a class a 定義非靜態塊 定義構造方法 a 定義成員變數 string name a的名字 static int ii 0 定義成員方法 void a1 static void a2 定義內部類b 內部類也可以定義內部類,即內部類可多重巢狀 class b 定義b的內部類c clas...

Java 類呼叫的幾種情形

一 類的分類 1 普通類 2 抽象類 含有抽象方法的類 3 靜態類 不需要例項化,就可以使用的類 二 方法的分類 1 私有方法 只有類的內部才可以訪問的方法 2 保護方法 只有類的內部和該類的子類可以訪問的方法 3 共有方法 無論內部或外部均可訪問的方法 4 靜態方法 可以不例項話物件,通過類名.方...

java中的遞迴呼叫

b 1 遞迴函式的定義 b 答 遞迴函式即自呼叫函式,在函式體內直接或間接的呼叫自己,即函式的巢狀是函式本身。2 遞迴方式 遞迴呼叫有直接遞迴和間接遞迴兩種方式。a 直接遞迴 在函式中出現呼叫函式本身。示例1 下面 求斐波那契數列第n項,斐波那契數列第一和第二項是1,後面每一項是前兩項之和,即1 1...