快速排序算法实现:
#include<iostream>
using namespace std;
void quick_sort(int s[], int l, int r) {
int i = l, j = r, mid = s[l];
while(i < j) {
while(s[i] < mid) ++i;
while(s[j] > mid) --j;
if(i <= j) {
swap(s[i], s[j]);
++i, --j;
}
if(l < j) quick_sort(s, l, j);
if(i < r) quick_sort(s, i, r);
}
归并排序算法实现:
#include <iostream>
using namespace std;
void merge(int a[] , int first , int mid , int last) {
int i = first , j = mid+1 , m = mid , n = last;
int k = 0;
int *t = new int[n-i+1];
while(i <= m && j <= n) {
if(a[i] <= a[j]) {
t[k++] = a[i++];
}
else {
t[k++] = a[j++];
}
}
while(i <= m) {
t[k++] = a[i++];
}
while(j <= n) {
t[k++] = a[j++];
}
for(int i = 0 ; i < k ; ++i) {
a[first+i] = t[i];
}
delete []t;
}
void mergeSort(int a[] , int first , int last) {
if(first < last) {
int mid = (first + last)/2;
mergeSort(a , first , mid);
mergeSort(a , mid+1 , last);
merge(a , first , mid , last);
}
}