惊叹!世界上最漂亮的排序算法!
void stooge_sort(int arr[], int i, int j){
if (arr[i]>arr[j]) swap(arr[i], arr[j]);
if (i+1>=j) return;
int k=(j-i+1)/3;
stooge_sort(arr, i, j-k);
stooge_sort(arr, i+k, j);
stooge_sort(arr, i, j-k);
}
void stooge_sort(int arr[], int i, int j){
if (arr[i]>arr[j]) swap(arr[i], arr[j]); // 比较
if (i+1>=j) return; // 是否结束
int k=(j-i+1)/3; // 三等分
stooge_sort(arr, i, j-k); // 前2/3半区
stooge_sort(arr, i+k, j); // 后2/3半区
stooge_sort(arr, i, j-k); // 前2/3半区
}
画外音:今后面试手写排序不再是问题。
评论