java-数组排序--冒泡排序、鸡尾酒排序、地精排序
冒泡排序
冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了
见图解
稳定性:稳定
时间复杂度: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-数组排序--冒泡排序、鸡尾酒排序、地精排序相关推荐
- java数组排序冒泡排序_java数组常见的排序——选择排序和冒泡排序
将数组中的元素按照一定的顺序(从小到大,或从大到小)排列 1,以下用了常用的两种排序,选择排序和冒泡排序 package com.mydemo02; import java.util.Arrays; ...
- c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...
一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...
- java数组排序法方法_JAVA数组中五种常见排序方法
前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- java冒泡排序_JAVA实现经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序)...
冒泡排序 依次比较相邻的元素,若发现逆顺序,则交换.小的向前换,大的向后换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成. import ...
- java冒泡排序找最大的值_(13)數組操作:遍歷、輸出最大值、冒泡排序、選擇排序,java已有的排序方法、折半查找...
1.數組遍歷 /* * 獲取數組中元素,遍歷 */ int []y=new y[3]; for(int i=0;i { System.out.println("y["+i+&quo ...
- Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字
**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法.编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字 题目 题目描述 冒泡排序法 / 下沉排序法 破题 代码 运 ...
- java 排序 1和1_新手入门-冒泡排序和选择排序第一节排序1.1排序概述排序(
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 新手入门-冒泡排序和选择排序 第一节排序 1.1排序概述 排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.  ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
最新文章
- weex css单位,weex 踩坑
- iOs 自定义UIView 日历的实现 Swift2.1
- 一文告诉你,为什么要研究JVM原理
- 如何做好数字化体验管理,了解一下?
- 史上最全的 SQL 优化方案!建议收藏
- java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
- android 查看多个图片,android提取视频多张图片和视频信息
- 谷歌修复安卓蓝牙组件中无需用户交互的 bug
- 美的董事长:数字化每年投几十亿,看不见结果我也焦虑
- C# 访问MongoDB 通用方法类
- Excel怎么将不规律的英文字母提取出来
- JavaScript——数组——slice方法
- 程序员最常用的6大技术博客排行榜
- 232串口计算机口电压,如何从PC机RS-232串口获取电源的简单方法详细说明
- 百度地图高德地图谷歌地图腾讯地图商家数据采集
- MFC课程设计 --学生成绩管理系统
- 学习Python对英语水平有要求吗?
- 困在“墙”里的中年程序员
- 小米-测试工程师面试20190418
- C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)
热门文章
- 浅谈协同工作流的分布式应用
- 090620 T The events of HttpApplication
- 四川大学研究生的一封公开信
- uni-app在iOS移动端页面上下滑动关闭(页面回弹问题,非刷新)
- 数据包发包工具bittwist
- 会话跟踪技术Cookieless
- Kail Linux渗透测试实训手册第3章信息收集
- centos得mysql安装教程_Centos下Mysql安装图文教程_MySQL
- python函数使用易错点_大部分人都会忽略的Python易错点总结
- python records库_你的第一份Python库源码阅读:records库