版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/pqwGreenhand/article/details/53581577

一、冒泡排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],依此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,依此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。

优点:稳定,比较次数已知;

缺点:慢,每次只能移动相邻两个数据,移动数据的次数多。

二、选择排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[1]与a[3]的值,若a[1]大于a[3]则交换两者的值,否则不变。再比较a[1]与a[4],依此类推,最后比较a[1]与a[n]的值。这样处理一轮后,a[1]的值一定是这组数据中最小的。再将a[2]与a[3]~a[n]以相同方法比较一轮,则a[2]的值一定是a[2]~a[n]中最小的。再将a[3]与a[4]~a[n]以相同方法比较一轮,依此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。

优点:稳定,比较次数与冒泡排序一样,数据移动次数比冒泡排序少;

缺点:相对之下还是慢。

三、插入排序

已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。b[2]~b[m]用相同方法插入。(若无数组a,可将b[1]当作n=1的数组a)

优点:稳定,快;

缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。

这几种代码实现:

冒泡排序:

for(int i=0;i

for(int j=0;j

if(ary[j]>ary[j+1]){

int t = ary[j];

ary[j]=ary[j+1];

ary[j+1]=t;

}

}

}

选择排序:

for(int i=0;i

for(int j=i+1;j

if(ary[i]>ary[j]){

int t = ary[i];

ary[i]=ary[j];

ary[j]=t;

}

}

}

插入排序:

for (int i = 1; i < ary.length; i++) {

int temp = ary[i];

int j;

for (j = i - 1; j >= 0 && temp < ary[j]; j--) {

ary[j + 1] = ary[j];

}

ary[j + 1] = temp;

}

————————————————

版权声明:本文为CSDN博主「pqwGreenhand」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/pqwGreenhand/article/details/53581577

java 排列3_java中的三大排序算法相关推荐

  1. java 排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  2. java中queue排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  3. java冒泡排序_Java专题(二):Java中常见的排序算法有哪些?---冒泡排序

    排序相关的的基本概念排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域,即多个数据成员 ...

  4. C语言中数组的排序算法详解——选择法、冒泡法、交换法、插入法、折半法

    选择法排序 选择法排序是指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小的数字来排序.从第一个数字开始,将第一个数字与数组中剩下数字中最小的那一个交换位置,然后将第二个数字与剩下数字中最 ...

  5. java实现字符串中的字母排序

    java实现字符串中的字母排序 题目要求: java实现字符串中的字母排序并输出排序后的结果 分析: 1.创建一个字符串,赋值并将字符逐个存进数组中. String str = "chenu ...

  6. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  7. 机器学习(二十二)——推荐算法中的常用排序算法, Tri-training

    推荐算法中的常用排序算法 Pointwise方法 Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Princi ...

  8. java合并排序_Java中的合并排序算法

    合并排序算法是一种分而治之的算法.在分而治之的范式中,一个问题被分解成较小的问题,其中每个小问题仍然保留着大问题的所有属性--大小除外.为了解决原始问题,每个部分都是单独解决的,然后这些部分又合并在一 ...

  9. Java中常见的排序算法代码演示

    package cn.xbz;import java.util.Arrays;/*** 各种排序法的演示* @author xbz**/ public class ArraySort {public ...

最新文章

  1. php 脚本 fpm缓存,PHP生命周期及fpm(FastCGI进程管理器)的运作方式
  2. java 调用SAP RFC函数错误信息集锦
  3. oozie与hue整合 执行WC案例报错: 连接10020端口被拒绝
  4. seaborn画图设置横纵坐标标签
  5. 《Java特种兵》1.8 老A是在逆境中迎难而上者
  6. pyqt5多进程 python_Python 多进程大全
  7. html 抽奖机 代码,JS实现转动随机数抽奖特效代码
  8. springboot集成ureport2
  9. CGAL license说明
  10. python快速实现简易超级玛丽小游戏
  11. 计算机里的文档怎么设置密码,文件夹怎么设置密码,教您如何给电脑上文件夹设置密码...
  12. nm命令 查看符号文件
  13. dom4j解析xml文件
  14. 验证方法学覆盖率(一):代码覆盖率
  15. Nginx遇到无法创建或打开nginx.pid的解决方法
  16. AAAI2021:面向交通流预测的时空融合图神经网络
  17. sct文件编写与使用
  18. android 8.0预装APK为可卸载
  19. RPG Maker XP游戏制作方法(五)
  20. C#网络应用编程 第2版

热门文章

  1. oracle的一些常使用命令,Oracle 经常使用命令小结
  2. python取数字第一位数_python基础:8.切片和缩进
  3. sklearn.decomposition.FastICA实现FastICA算法
  4. Opencv——图像膨胀
  5. 视频制作中的绿幕与拜耳阵列
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨每个帖子的评论数【难度中等】​
  7. java 常量折叠_深入理解Java虚拟机之早期编译器优化
  8. ApkTool2.34 打包经验
  9. obj文件编辑软件_工程动画制作 | MAX文件导出obj、fbx格式在Bentley软件中应用
  10. [转载] --- 数据库基本知识