十大经典排序算法
臭皮匠排序(Stooge Sort)是一种低效的递归排序算法,实现步骤如下:
- 在排序区间内如果最后一个值小于第一个值,则交换这两个数。
- 如果当前区间元素数量大于等于 3 :
- 使用臭皮匠排序法递归排序前 2/3 的元素。
- 使用臭皮匠排序法递归排序后 2/3 的元素。
- 再次使用臭皮匠排序法递归排序前 2/3 的元素。
private void stoogeSort(int[] nums) {
stoogeSort(nums, 0, nums.length - 1);
}
private void stoogeSort(int[] nums, int left, int right) {
if (nums[left] > nums[right])// 如果最后一个值小于第一个值,则交换这两个数
swap(nums, left, right);
if (right - left + 1 >= 3) {// 如果当前集合元素数量大于等于3,执行下面操作
int third = (right - left + 1) / 3;
stoogeSort(nums, left, right - third);// 使用臭皮匠排序法排序前2/3的元素
stoogeSort(nums, left + third, right);// 使用臭皮匠排序法排序后2/3的元素
stoogeSort(nums, left, right - third);// 再次使用臭皮匠排序法排序前2/3的元素
}
}
private void swap(int[] nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
冒泡排序 ,选择排序 ,插入排序 ,快速排序 ,归并排序 ,堆排序 ,桶排序 ,基数排序 ,希尔排序 ,计数排序 ,位图排序 ,拓扑排序 ,二叉树排序 ,Bogo排序 ,睡眠排序 ,鸡尾酒排序 ,侏儒排序 ,臭皮匠排序 ,图书馆排序 ,珠排序 ,链表排序 ,鸽巢排序 ,奇偶排序 ,慢速排序 ,耐心排序 ,梳排序 ,煎饼排序 ,插值排序 |