privatestatic
int binarysearch(int list,int
target)
else
if(target >list[mid])
else
if(target ==list[mid])
}return -1
; }
publicstatic
void bubblesort(int
arr) }}
}
基本思想是將要排序的資料分割成獨立的兩部分 ,其中一部分的所有資料都比另外一部分的所有資料都要小 ,然後在按照此方法對兩部分資料分別進行快速排序 ,最終得到乙個有序的序列。
privatestatic
void quicksort(int a, int low, int
high)
int i =low;
int j =high;
//預設 key
int key =a[low];
//開始一趟排序
while( i //從左往右找到第乙個大於等於 key 的數
while( ikey)
//交換,達到以 key 「分治」 的效果
if(i}
//當 i = j 時,調整 key 的值為 a[i] == a[j]
int temp =a[i];
a[i] =a[low];
a[low] =temp;
//對 key 左邊的數快速排序
quicksort(a, low, i-1
);
//對 key 右邊的數快速排序
quicksort(a, i+1
, high);
}
假設要排的陣列為:int a = ;選擇 key = 5, 開始時 i = 0,j = 7
下標 01
2345
67開始 52
8923
49i j
第一次找 52
8923
49i j
交換: 52
4923
89i j
第二次找 52
4923
89i j
交換: 52
4329
89i j
第三次找 52
4329
89ij調整key: 25
4359
89ij
常見的演算法
演算法衡量的標準 1.時間複雜度 兩個程式的執行時間如何衡量?答 用time模組來判斷,time.time 來進行計算,前提是兩段程式必須執行在同乙個硬體相同 cpu 的環境下,才會有意義 因此,我們使用時間差的方式來衡量乙個程式是否快慢沒有任何的意義。所以使用程式執行的大概次數,來衡量程式的執行快...
常見的排序演算法
一 氣泡排序 include include void swap int a,int b void bubblesort int arr,int size int main void bubblesort a,5 for int i 0 i 5 i cout 二 選擇排序 void selectio...
常見的排序演算法
需要包含的標頭檔案 include stdafx.h include include include 氣泡排序是穩定排序 時間複雜度 o n 2 void swap int a,int b void bubblesort int a,int n void printnum int a,int n a...