排序算法模板(C语言版) By LYLtim

来源:互联网 发布:perl语言编程 编辑:程序博客网 时间:2024/06/11 14:39

1.快速排序

/* By LYLtim */void swap (int *a, int *b){int t = *a; *a = *b; *b = t;}void QSort(int a[], int l, int r){int pl = l, pr = r, key = a[(l+r)>>1];while (pl < pr) {while (a[pl] < key) pl++;while (a[pr] > key) pr--;if (pl <= pr) {swap(&a[pl], &a[pr]);pl++; pr--;}}if (pl < r) QSort(a, pl, r);if (pr > l) QSort(a, l, pr);}

2.归并排序

/* By LYLtim */void merge(int start, int mid, int end){intpl, pr, p = start,len1 = mid - start + 1,len2 = end - mid,left[len1], right[len2];for (pl = 0; pl < len1; pl++) left[pl] = a[start+pl];for (pr = 0; pr < len2; pr++) right[pr] = a[mid+1+pr];pl = pr = 0;while (pl < len1 && pr < len2)if (left[pl] < right[pr]) a[p++] = left[pl++];else a[p++] = right[pr++];while (pl < len1) a[p++] = left[pl++];while (pr < len2) a[p++] = right[pr++];}void sort(int start, int end){if (start < end) {int mid = (start + end) >> 1;sort(start, mid);sort(mid+1, end);merge(start, mid, end);}}


原创粉丝点击