利用遞迴和分治的思想,對陣列:a=進行快速排序
快速排序的思想
取陣列的第乙個作為參考標準比較
將陣列中的其它數與之比較,比它大的數和第它小的數,放到原陣列的前半部分和後半部分
然後運用遞迴的思想對前後兩部分進行快速排序
分治的標準:對應每次排序的陣列第乙個下標值
舉例:a= a2=, a={3,1,2,4,5,8,6}
4. 第二輪,開始遞迴:a1以3為標準,a2以5為標準,繼續分割為a3,a4,a5,a6
**:
#include
intpartition
(int a,
int s,
int t)
a[i]
=tmp;
//兩下標不斷靠攏直到i=j,再講比較值插入中間a[i]
return i;
//返回陣列中間下標,好進行下一輪的劃分
}void
quicksort
(int a,
int s,
int t)
//傳入陣列 ,及陣列的起始下標
}int
main()
;printf
("排序之前的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
printf
("%\n");
quicksort
(a,0,9
);printf
("排序之後的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
}
對陣列:a=進行歸併排序
解法1:遞迴法
歸併排序的遞迴法思想
1. 分割:將乙個陣列從中中間下標處不斷分割,遞迴直到不可分割為止,以最大下標和最小下標的和的一半為標準,向下取整
2. 排序、合併:對分割的部分排序,然後將其合併
3. 遞迴:然後迴圈此過程,不斷的排序合併
4. 分治的標準:陣列中間下標
舉例:a=
分割 .,,,
排序,合併(遞迴2次)
,
#include
#include
void
merge
(int a,
int low,
int mid,
int high)
else
//然後將剩下沒有裝入陣列中得部分,按順序裝入tmpa陣列中
while
(i<=mid)
while
(j<=high)
//重新排列好後將所有的數加入到a陣列中,釋放掉臨時陣列tmpa
for(k=
0,i=low;i<=high;k++
,i++
) a[i]
=tmpa[k]
;free
(tmpa);}
void
mergesort
(int a,
int low,
int high)
//排序主體
}int
main()
;printf
("排序之前的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
printf
("%\n");
mergesort
(a,0,9
);printf
("排序之後的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
}
解法2:非遞迴法
歸併排序非遞迴思想
每一次以2指數次方增長進行排序,將多餘的數單獨排序
舉例 a=
以2劃分:,
以4劃分:,
以8劃分:
**
#include
#include
void
merge
(int a,
int low,
int mid,
int high)
else
while
(i<=mid)
//將另乙個沒放完的陣列放入資料
while
(j<=high)
for(k=
0,i=low;i<=high;k++
,i++
)//最後將資料轉入a陣列,釋放臨時指標
a[i]
=tmpa[k]
;free
(tmpa);}
void
mergepass
(int a,
int length,
int n)
void
mergesort
(int a,
int n)
//排序輸入陣列,及陣列長度
intmain()
;printf
("排序之前的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
printf
("%\n");
mergesort
(a,10);
printf
("排序之後的陣列為");
for(
int i=
0;i<=
9;i++
)printf
("%d "
,a[i]);
}
C 第四節課
知識點 三種屬性,using改變許可權,繼承時名字的遮蔽,函式過載的遮蔽問題,派生類的建構函式,多繼承類,命名衝突,虛繼承,多繼承的建構函式,在基類中,基類的public,protected private 成員都是可以訪問的,但是類的物件只能訪問public成員 public繼承 基類的publi...
學習python第四節課
基礎資料概念 資料型別指的就是變數的值的型別,也就是可以為變數賦哪些值 整數和小數 整數 所有整數 例如 a 1 b 100 c 999 都是int型別 小數常量 所有小數 例如 a 1.2 b 6.66 用float型別表示 字串是由數字 字母 下劃線組成的一串字元 注意 單引號和雙引號不能混合使...
軟體測試第四節課總結
1 netware 作業系統 工業網際網路 基於文字介面 沒趕上圖形介面 被淘汰 windows基於tcp ip,剛開始不穩定,但搶占了先機,靠使用者反饋資訊,現在ubuntu走的就是這條路 2 黑盒測試方法 邊界值 等價類劃分 正交測試 對偶組合測試 因果圖測試 白盒測試 塊測試 語句覆蓋 判定覆...