冒泡排序
基本思路:
是一種簡(jiǎn)單的交換類排序箩帚。其基本思路是,從頭開(kāi)始掃描待排序的元素捍岳,在掃描過(guò)程中依次對(duì)相鄰元素進(jìn)行比較,將關(guān)鍵字值大的元素后移。
每經(jīng)過(guò)一趟排序后祟同,關(guān)鍵字值最大的元素將移到末尾,此時(shí)記下該元素的位置理疙,下一趟排序只需要比較到此位置為止晕城,直到所有元素都已有序排列。
一般地窖贤,對(duì)n個(gè)元素進(jìn)行冒泡排序砖顷,總共需要進(jìn)行n-1趟。第1趟需要比較n-1次赃梧,第2趟需要比較n-2次滤蝠,......第i趟需要比較n-i次。
快速排序?
對(duì)冒泡排序的一種改進(jìn)授嘀,若初始記錄序列按關(guān)鍵字有序或基本有序物咳,蛻化為冒泡排序。使用的是遞歸原理蹄皱,在所有同數(shù)量級(jí)O(n longn) 的排序方法中览闰,其平均性能最好。就平均時(shí)間而言巷折,是目前被認(rèn)為最好的一種內(nèi)部排序方法
基本思想是:通過(guò)一躺排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分压鉴,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序锻拘,整個(gè)排序過(guò)程可以遞歸進(jìn)行油吭,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。
三個(gè)指針: 第一個(gè)指針?lè)Q為pivotkey指針(樞軸)署拟,第二個(gè)指針和第三個(gè)指針?lè)謩e為left指針和right指針婉宰,分別指向最左邊的值和最右邊的值。left指針和right指針從兩邊同時(shí)向中間逼近芯丧,在逼近的過(guò)程中不停的與樞軸比較芍阎,將比樞軸小的元素移到低端,將比樞軸大的元素移到高端缨恒,樞軸選定后永遠(yuǎn)不變谴咸,最終在中間,前小后大骗露。
需要兩個(gè)函數(shù):
① 遞歸函數(shù)? public static void quickSort(int[]n ,int left,int right)
② 分割函數(shù)(一趟快速排序函數(shù)) public static int partition(int[]n ,int left,int right)
代碼
二分法插入排序岭佳;
算法思想簡(jiǎn)單描述:
在插入第i個(gè)元素時(shí),對(duì)前面的0~i-1元素進(jìn)行折半萧锉,先跟他們
中間的那個(gè)元素比珊随,如果小,則對(duì)前半再進(jìn)行折半,否則對(duì)后半
進(jìn)行折半叶洞,直到left>right鲫凶,然后再把第i個(gè)元素前1位與目標(biāo)位置之間
的所有元素后移,再把第i個(gè)元素放在目標(biāo)位置上衩辟。