bubble sort: bubbling
merge sort: divide-and conquer(分而治之)
quick sort: location (元素定位
快速排序
int partition(sqlist &l, int low, int high)
l.r[0] = l.r[low];
pivorkey = l.r[low].key;
while(low < high)
void mergesort(int *a,int n)
} int main()
clock_t s = clock();
mergesort(data, n);
clock_t e = clock();
k = n;
while(k --)
cout << endl;
cout << "the algrothem used " << e-s << " miliseconds."<< endl;
delete data;
return 0;
void mergesort(struct record arr_buffer[40])
}void mergepass(seqlist r,int length)
{int i;
for(i=1;i+2*length-1<=n;i=i+2*length)
merge(r,i,i+length-1,i+2*length-1);
if(i+length-1void merge(int *a,int low,int mid,int high)
int i = low,j = mid + 1,k = 0;
int *temp = (int *)malloc((high - low + 1)*sizeof(int));
while(i <= mid && j <= high)
a[i] < a[j] ? (temp[k++] = a[i++]):(temp[k++] = a[j++]);
while(i <= mid)
temp[k++] = a[i++];
while(j <= high)
temp[k++] = a[j++];
memcpy(a + low,temp,(high -low + 1)*sizeof(int));
free(temp);
演算法設計與分析 合 歸併排序
歸併排序的思想是基於分治法的思想之上的,也是有分解 解決 合併這三步。分解 將n個元素的序列分成兩個子串行,記為a 1 n 2.and a n 2 1 n 解決 將兩個子串行分別遞迴歸併排序 合併 將已有序的兩個子串行合併,得到有序的序列。merge sort a 1 n 1.if n 1,done...
歸併排序與快速排序
1.演算法簡介 歸併排序和快速排序都是採用遞迴的結構實現的,不同的是歸併排序在遞迴過程中有合併子串行的過程,而快速排序中沒有,但是快速排序中有較為複雜的劃分過程。二者的平均時間複雜度均為o nlgn 其中快速排序的係數較小 歸併排序最壞情況複雜度為o nlgn 快排在最壞情況下時間複雜度為o n 2...
快速排序與歸併排序
簡單總結一下快速排序和歸併排序的用法,這兩種方法十分省時,在題目中常用。快速排序 基本思想通過一趟排序將代拍記錄分成兩部分,一部分記錄關鍵字比另一部分小,再對這兩部分記錄繼續排序,達到整個序列有序。具體做法是附設兩個指標i和j,初值分別為l,r,任選乙個記錄做樞紐取mid,首先從j位置向前搜找到第乙...