简单插入排序与希尔排序
来源:互联网 发布:iphone硬件检测软件 编辑:程序博客网 时间:2024/05/19 08:39
插入排序由N-1趟排序组成,对于p=1到N-1趟排序,插入排序保证从位置0到位置p上的元素为已排序状态。时间复杂度为O(N2), 通过交换相邻元素进行排序的任何算法平均都需要O(N2)时间。
import java.util.Arrays;public class insertionSort {public static int[] insertSort(int[] intArr) {int j;for (int i = 1; i < intArr.length; i++) {int temp = intArr[i];for (j = i; j > 0 && temp < intArr[j - 1]; j--) {intArr[j] = intArr[j - 1];}intArr[j] = temp;System.out.println(Arrays.toString(intArr));}System.out.println("--------------------------------");return intArr;}public static void main(String[] args) {int[] arr = { 34, 8, 64, 51, 32, 21 };System.out.println(Arrays.toString(insertSort(arr)));}}
简单插入排序结果:
[8, 34, 64, 51, 32, 21][8, 34, 64, 51, 32, 21][8, 34, 51, 64, 32, 21][8, 32, 34, 51, 64, 21][8, 21, 32, 34, 51, 64]--------------------------------[8, 21, 32, 34, 51, 64]
希尔排序(Shellsort):
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
- 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
import java.util.Arrays;public class shellSort {public static int[] shSort(int[] intArr) {int j;for (int gap = intArr.length / 2; gap > 0; gap /= 2) {for (int i = gap; i < intArr.length; i++) {int temp = intArr[i];for (j = i; j >= gap && temp < intArr[j - gap]; j -= gap) {intArr[j] = intArr[j - gap];}intArr[j] = temp;}System.out.println(Arrays.toString(intArr));}System.out.println("-------------------------------------------------");return intArr;}public static void main(String[] args) {int[] arr = {81, 8, 64, 51, 32, 21,19,99,11,0,3,7,5};System.out.println(Arrays.toString(shSort(arr)));}}Shell排序结果:
[5, 8, 11, 0, 3, 7, 19, 99, 64, 51, 32, 21, 81][0, 3, 7, 5, 8, 11, 19, 32, 21, 51, 99, 64, 81][0, 3, 5, 7, 8, 11, 19, 21, 32, 51, 64, 81, 99]-------------------------------------------------[0, 3, 5, 7, 8, 11, 19, 21, 32, 51, 64, 81, 99]
0 0
- 简单插入排序与希尔排序
- 【算法】简单插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 插入排序与希尔排序
- 直接插入排序、二分插入排序、希尔排序、冒泡排序与简单选择排序
- 排序:插入排序与希尔排序
- 简单插入排序 二分插入排序 shell希尔插入排序
- 简单插入排序和希尔排序
- 插入排序之之简单插入排序和希尔排序
- 数据结构之插入排序与希尔排序
- 直接插入排序与希尔排序
- 数据结构-直接插入排序与希尔排序
- 直接插入排序与希尔排序
- 插入排序与希尔排序详解
- 栅栏密码
- 零java基础搞定微信Server_3_搭建微信Server本地开发环境
- UVa OJ 1609 - Foul Play
- 变量和常量
- UITextField 知识整理
- 简单插入排序与希尔排序
- Linux软连接与硬连接
- 零java基础搞定微信Server_4_写一个servlet的DEMO
- 机器视觉开源代码集合
- [LeetCode]231. Power of Two&326. Power of Three&342. Power of Four
- JAVA进阶2.4——finally
- 70. Climbing Stairs
- 使用java语言将数组中的数据写入txt文件,然后读取
- mptcp应用——在nexus5安装mptcp