2019独角兽企业重金招聘Python工程师标准>>>

import java.util.Arrays;public class Main {public static void main(String[] args) {int[] arr = {6, 9, 5, 2, 1, 7, 2, 3};System.out.println(Arrays.toString(arr));
//        bubbleSort(arr);
//        selectSort(arr);
//        insertionSort(arr);shellSort1(arr);
//        shellSort2(arr);System.out.println(Arrays.toString(arr));}/*** 冒泡排序法** @param arr*/public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length; i++) {int min = i;for (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[i]) {swap(arr, j, i);}}}}/*** 选择排序法** @param arr*/public static void selectSort(int[] arr) {for (int i = 0; i < arr.length; i++) {int min = i;for (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[min]) {min = j;}}if (min != i) {swap(arr, i, min);}}}/*** 插入排序法** @param arr*/public static void insertionSort(int[] arr) {for (int i = 0; i < arr.length; i++) {int j = i;while (j > 0 && arr[j] < arr[j - 1]) {swap(arr, j, j - 1);j--;}}}/*** 希尔排序 针对有序序列在插入时采用交换法** @param arr*/public static void shellSort1(int[] arr) {//增量gap,并逐步缩小增量for (int gap = arr.length / 2; gap > 0; gap /= 2) {//从第gap个元素,逐个对其所在组进行直接插入排序操作for (int i = gap; i < arr.length; i++) {int j = i;while (j - gap >= 0 && arr[j] < arr[j - gap]) {//插入排序采用交换法swap(arr, j, j - gap);j -= gap;}}}}/*** 希尔排序 针对有序序列在插入时采用移动法。** @param arr*/public static void shellSort2(int[] arr) {//增量gap,并逐步缩小增量for (int gap = arr.length / 2; gap > 0; gap /= 2) {//从第gap个元素,逐个对其所在组进行直接插入排序操作for (int i = gap; i < arr.length; i++) {int j = i;int temp = arr[j];if (arr[j] < arr[j - gap]) {while (j - gap >= 0 && temp < arr[j - gap]) {//移动法arr[j] = arr[j - gap];j -= gap;}arr[j] = temp;}}}}/*** 交换数组元素** @param arr* @param a* @param b*/public static void swap(int[] arr, int a, int b) {int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}
}

http://www.cnblogs.com/chengxiao/p/6103002.html

转载于:https://my.oschina.net/547217475/blog/1581937

排序(选择,冒泡,直接插入,希尔排序)相关推荐

  1. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  2. 排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序)

    排序也叫排序算法,排序是将一组数据,依指定的顺序进行排列的过程. 排序的分类: 1)内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序. 2)外部排序:数据量过大,无法全部加载到内存中,需要 ...

  3. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

    JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...

  4. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  5. 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序

    第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...

  6. 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。

    题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...

  7. 程序员内功修炼之学好算法和数据结构(一)排序基础、选择排序、插入排序、希尔排序...

    一.排序基础(重要) 1.1 为什么要学习O(n^2)的排序算法? 编码简单,易于实现,是一些简单情景的首选. 在一些特殊情况下,简单的排序算法更有效. 简单的排序算法思想衍生出复杂的排序算法,在这个 ...

  8. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序

    数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...

  9. js排序算法详解-希尔排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...

  10. 希尔排序 最坏时间_希尔排序算法

    希尔排序(Shell's Sort)是插入排序的一种,又称"缩小增量排序",是直接插入排序算法经过改进之后的一种更高效的版本.希尔排序为了加快速度简单地改进了插入排序,交换不相邻的 ...

最新文章

  1. python难学不-python难学吗-没有编辑基础可以学python吗?
  2. Istio入门:架构原理及在k8s部署
  3. 故障码123401_电力系统规划设计对电力工程设计的应用
  4. Android Input子系统-含实例源码
  5. 华为机试HJ91:走方格的方案数
  6. 《精通ArcGIS Server 应用与开发》——2.4 ArcGIS Server的安装与配置
  7. 不是我吹,这款神仙 IDEA 插件你真没用过!
  8. python 数组中取出最小值_每日算法系列【LeetCode 153】寻找旋转排序数组中的最小值...
  9. 攻防世界mobile新手区之app3 write up
  10. Silverlight轻量级查询对比
  11. Element系列之阻止el-switch冒泡事件
  12. 二维树状数组--hdu1892
  13. 在osgEarth中添加模型的简单示例
  14. C语言--指针作为数组参数获取数组平均数
  15. extern的几种用法
  16. MongoDB——数据类型详解
  17. 美国大学计算机专业排名2014,2014USNews美国大学研究生计算机专业排名
  18. 庞皓计量经济学第四版_庞皓计量经济学(第4版)题库
  19. (c语言)还有多少天过年
  20. AT89C51单片机交通灯仿真图+代码

热门文章

  1. MINIGUI常见错误集及解决方法
  2. php转字,php汉字如何转数字
  3. 增量索引和全量索引_搜索引擎(七)高可用的solr搜索引擎服务架构
  4. java 并发编程视频教程_全面深入学习java并发编程,视频教程下载
  5. arg是什么函数_怎么实现边听歌边搜图?线程初体验:常用函数
  6. java最少有多少线程_【并发编程】一个最简单的Java程序有多少线程?
  7. ad 4层板设计实例文件_案例 | 美研【风险管理专业】1620Fall 310+申请实例
  8. java自动转换_java类型转换详解(自动转换和强制转换)
  9. jq画布插件_超炫HTML 5开发的jQuery进度条插件
  10. python: 判断字符串是否为合法的json格式