冒泡排序

冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了

见图解

稳定性:稳定
时间复杂度:O(n2)

 1     public static void bubbleSort(int[] arr) {
 2
 3         for (int i = 0; i < arr.length; i++) {
 4             for (int j = 0; j < arr.length-1-i; j++) {
 5                 if(arr[j]>arr[j+1]) {
 6                     int t=arr[j];
 7                     arr[j]=arr[j+1];
 8                     arr[j+1]=t;
 9                 }
10             }
11         }
12
13     }

动态图解

鸡尾酒排序

鸡尾酒排序是冒泡排序的改进,当算法将一个最大数冒泡到列尾时,再从列尾开始将最小值冒泡到列首

见图解

稳定性:稳定

时间复杂度:O(n2)

 1     public static void coktailSort(int[] arr) {
 2
 3         for (int i = 0; i < arr.length/2; i++) {
 4             for (int j = i; j < arr.length-1-i; j++) {
 5                 if(arr[j]>arr[j+1]) {
 6                     int t=arr[j];
 7                     arr[j]=arr[j+1];
 8                     arr[j+1]=t;
 9                 }
10             }
11             for (int j = arr.length-(1+1)-i; j >i; j--) {
12                 if(arr[j]<arr[j-1]) {
13                     int t=arr[j];
14                     arr[j]=arr[j-1];
15                     arr[j-1]=t;
16                 }
17             }
18         }
19
20     }

动态图解

地精排序

地精排序,传说有一个地精在排列一排花盘。他从前至后的排列,如果相邻的两个花盘顺序正确,他向前一步;如果花盘顺序错误,他后退一步,直到所有的花盘的顺序都排列好。(地精排序思路与插入排序和冒泡排序很像, 主要其对代码进行了极简化)

稳定性:稳定

时间复杂度:O(n2

 1     public static void gnomeSort(int[] arr) {
 2
 3         int i=1;
 4         while(i<arr.length) {
 5
 6             if(i==0||arr[i]>=arr[i-1]) {
 7                 i++;
 8             }else {
 9                 int t=arr[i];
10                 arr[i]=arr[i-1];
11                 arr[i-1]=t;
12                 i--;
13             }
14
15         }
16
17     }


如果有地方写的错误,或者有什么疑问与建议,欢迎大家提出来 愿与大家一同进步

转载于:https://www.cnblogs.com/wangbingc/p/10131556.html

java-数组排序--冒泡排序、鸡尾酒排序、地精排序相关推荐

  1. java数组排序冒泡排序_java数组常见的排序——选择排序和冒泡排序

    将数组中的元素按照一定的顺序(从小到大,或从大到小)排列 1,以下用了常用的两种排序,选择排序和冒泡排序 package com.mydemo02; import java.util.Arrays; ...

  2. c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...

  3. java数组排序法方法_JAVA数组中五种常见排序方法

    前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...

  4. 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  5. java冒泡排序_JAVA实现经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序)...

    冒泡排序 依次比较相邻的元素,若发现逆顺序,则交换.小的向前换,大的向后换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成. import ...

  6. java冒泡排序找最大的值_(13)數組操作:遍歷、輸出最大值、冒泡排序、選擇排序,java已有的排序方法、折半查找...

    1.數組遍歷 /* * 獲取數組中元素,遍歷 */ int []y=new y[3]; for(int i=0;i { System.out.println("y["+i+&quo ...

  7. Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字

    **7.18(冒泡排序)使用冒泡排序算法编写一个排序方法.编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字 题目 题目描述 冒泡排序法 / 下沉排序法 破题 代码 运 ...

  8. java 排序 1和1_新手入门-冒泡排序和选择排序第一节排序1.1排序概述排序(

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 新手入门-冒泡排序和选择排序 第一节排序 1.1排序概述 排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.  ...

  9. java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

最新文章

  1. weex css单位,weex 踩坑
  2. iOs 自定义UIView 日历的实现 Swift2.1
  3. 一文告诉你,为什么要研究JVM原理
  4. 如何做好数字化体验管理,了解一下?
  5. 史上最全的 SQL 优化方案!建议收藏
  6. java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
  7. android 查看多个图片,android提取视频多张图片和视频信息
  8. 谷歌修复安卓蓝牙组件中无需用户交互的 bug
  9. 美的董事长:数字化每年投几十亿,看不见结果我也焦虑
  10. C# 访问MongoDB 通用方法类
  11. Excel怎么将不规律的英文字母提取出来
  12. JavaScript——数组——slice方法
  13. 程序员最常用的6大技术博客排行榜
  14. 232串口计算机口电压,如何从PC机RS-232串口获取电源的简单方法详细说明
  15. 百度地图高德地图谷歌地图腾讯地图商家数据采集
  16. MFC课程设计 --学生成绩管理系统
  17. 学习Python对英语水平有要求吗?
  18. 困在“墙”里的中年程序员
  19. 小米-测试工程师面试20190418
  20. C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)

热门文章

  1. 浅谈协同工作流的分布式应用
  2. 090620 T The events of HttpApplication
  3. 四川大学研究生的一封公开信
  4. uni-app在iOS移动端页面上下滑动关闭(页面回弹问题,非刷新)
  5. 数据包发包工具bittwist
  6. 会话跟踪技术Cookieless
  7. Kail Linux渗透测试实训手册第3章信息收集
  8. centos得mysql安装教程_Centos下Mysql安装图文教程_MySQL
  9. python函数使用易错点_大部分人都会忽略的Python易错点总结
  10. python records库_你的第一份Python库源码阅读:records库