初级排序算法(二)
来源:互联网 发布:php saas平台 源码 编辑:程序博客网 时间:2024/05/29 18:28
1. 选择排序的递归实现
public static void chooseSortRecursion(int[] arr) {recursion(arr, 0);}public static void recursion(int[] arr, int index) {int N = arr.length;if (index >= N - 1) return;int min = index;for (int i = index + 1; i < N; i++) {if (arr[i] < arr[min]) {exch(arr, i, min);}}recursion(arr, ++index);}
选择排序是从位置0开始选择最小的元素,每个位置的问题一样,只是问题的规模变小,可以选择递归。
从位置0到N - 2即可,因为到N - 1时只剩一个元素,不需要再选择。
2.插入排序的递归实现
public static void insertSortRecursion(int[] arr) {recursion(arr, 1);}public static void recursion(int[] arr, int index) {int N = arr.length;if (index > N - 1) return;for (int i = index; i > 0; i--) {if (arr[i] < arr[i-1]) {exch(arr, i-1, i);}}recursion(arr, ++index);}
3.复习一遍希尔排序
public static void shellSort(int[] arr) {int N = arr.length;int h = 1;while (3*h + 1 <= N) h = 3*h + 1;while (h >= 1) {for (int i = h; i < N; i++) {for (int j = i; j >= h; j -=h) {if (arr[j-h] > arr[j]) {exch(arr, j-h, j);}}}h = (h - 1) / 3;}}public static void exch(int[] arr, int a, int b) {if (a == b) return;int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}
阅读全文
0 0
- 初级排序算法(二)
- (算法)初级排序算法
- 初级算法排序(一)
- 算法(2.1 初级排序)
- 初级排序算法(algs4)
- 算法手记(5)初级排序算法
- 初级排序算法(选择排序、插入排序、希尔排序)
- 冒泡排序算法(初级版)
- 初级排序算法(选择、插入、Shell)
- 初级排序算法实现
- 初级排序算法总结
- 初级排序算法
- 排序算法之初级排序
- 排序算法之初级排序
- 初级排序算法(选择、插入、冒泡排序)
- 算法学习(1)——初级排序算法
- java算法(一)——初级排序算法
- 排序算法(二)
- 实现数组逆序排列的两种方法
- ip路由技术
- Python|笨方法学Python学习笔记2
- 洛谷 P2759 奇怪的函数
- bzoj5047 空间传送装置 spfa
- 初级排序算法(二)
- Android 实践之异步线程AsyncTask
- 高德地图两个不同的的功能合并
- Java总结篇系列:Java泛型
- 【LeetCode】算法题2 Add Two Numbers的归纳
- 使用phpQuery轻松采集网页内容
- pyspark sql createGlobalTempView和createOrReplaceTempView
- SHELL与空格
- Android so加固的简单脱壳