Java基础算法

这里只写了冒泡排序、选择排序、插入排序,后续还会更新。

1、原理

​ 冒泡排序:

​ 每次比较从第个数据开始,数据两两比较,如果左边数据比右数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。

​ 选择排序:

​ 表现最稳定的排序算法之一,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

​ 插入排序:

​ 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

2、代码测试

@SpringBootTest
class DemoApplicationTests {@Testvoid bubbleSort() {int arr[] = {5, 6, 9, 10, 25, 96, 32, 78, 54, 12, 36, 85, 789, 951, 75, 42, 62, 15, 16, 17, 18, 91, 82};String s = JSONArray.toJSONString(arr);System.out.println("排序前:" + s);//冒泡排序int[] bubbleSort = bubbleSort(arr);String s1 = JSONArray.toJSONString(bubbleSort);System.out.println("冒泡排序后:" + s1);//选择排序int[] selectionSort = selectionSort(arr);String s2 = JSONArray.toJSONString(selectionSort);System.out.println("选择排序后:" + s2);//插入排序int[] insertionSort = insertionSort(arr);String s3 = JSONArray.toJSONString(insertionSort);System.out.println("插入排序后:" + s3);}/*** 冒泡排序:每次比较从第个数据开始,数据两两比较,如果左边数据比右数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。*/public static int[] bubbleSort(int[] array) {if (array.length == 0)return array;//比较的次数for (int i = 0; i < array.length; i++) {for (int j = 0; j < array.length - 1 - i; j++) {int tep = array[j];//数据的交换if (tep > array[j + 1]) {array[j] = array[j + 1];array[j + 1] = tep;}}}return array;}/*** 选择排序:表现最稳定的排序算法之一,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。*/public static int[] selectionSort(int[] array) {if (array.length == 0)return array;for (int i = 0; i < array.length; i++) {int minIndex = i;for (int j = i; j < array.length; j++) {//找到最小的数if (array[j] < array[minIndex])//将最小数的索引保存minIndex = j;}int temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}return array;}/*** 插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。*/public static int[] insertionSort(int[] array) {if (array.length == 0)return array;int current;for (int i = 0; i < array.length - 1; i++) {current = array[i + 1];int preIndex = i;while (preIndex >= 0 && current < array[preIndex]) {array[preIndex + 1] = array[preIndex];preIndex--;}array[preIndex + 1] = current;}return array;}}

3、测试结果

Java代码来实现-经典排序算法相关推荐

  1. 选择排序java代码_JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  2. java实现十大经典排序算法

    文章目录 前言 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 鸡尾酒排序(Cocktail Sort) 希尔排序(Shell ...

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

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

  4. 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法

    排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...

  5. java 3 9 2 6数字排序_GitHub - JourWon/sort-algorithm: 史上最全经典排序算法总结(Java实现)...

    史上最全经典排序算法总结(Java实现) 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗, ...

  6. 终于,把十大经典排序算法汇总了!(Java实现版)

    转载自  终于,把十大经典排序算法汇总了!(Java实现版) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在" ...

  7. 十大经典排序算法详细总结 图形展示 代码示例

    文章目录 十大经典排序算法详细总结 0.排序算法说明 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.希尔排序( ...

  8. 十大经典排序算法动画与解析,看我就够了!(附代码)

    作者 | 程序员小吴 来源 | 五分钟学算法(ID:CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...

  9. 十大经典排序算法(Java实现)

    排序算法的重要性不言而喻,为了加深对这十种算法的理解,固写此文. 目录 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort ...

最新文章

  1. C# 开启及停止进程
  2. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
  3. Collections接口下的Comparetor类和Comparable接口排序
  4. MATLAB移植C的小结
  5. python autohotkey_PyAutoGUI-python版的autoit/AHK
  6. [CTSC2008]网络管理Network
  7. 论文|SDNE的算法原理、代码实现和在阿里凑单场景中的应用说明(附代码)
  8. 转:windows xp 安装MYSQL 出现Error 1045 access denied 的解决方法
  9. asp mysql 留言本_手把手教你设计ASP+ACCESS留言本
  10. BLUE引擎M2运行几天后就不可以施放合击技能的方法
  11. Hive实现笛卡尔积
  12. python控制51单片机的红绿灯_基于51单片机的交通灯控制设计
  13. Free Pascal初次体验(有亮点哦)
  14. 自娱自乐的FreeRTOS——config.h配置文件详解
  15. 终于把所有的 Python 库都整理出来啦,赶紧收藏!!!
  16. python sub函数用法_Python Pandas dataframe.sub()用法及代码示例
  17. 金士顿服务器内存条怎么看型号,Win10怎么查看内存条型号?
  18. 一个 24 通道 100Msps 逻辑分析仪
  19. C++主流IDE推荐
  20. 豆瓣评分9.6,推荐一本人工智能入门书籍《21天学通Python》

热门文章

  1. Machine Learning Pre-Basics
  2. 一个2层隐层神经网络解决抑或问题
  3. 程序员从普通二本毕业的真实薪资,记录一路走来的路
  4. 区块链相关术语(中英对照)
  5. python实现图像文件等比例压缩
  6. 单双节锂电池6-8.4V升压9V ,12V,24V快充PD升压系统解决方案
  7. CSS让5个20%div排成一行
  8. 【 C++11 】列表初始化、声明、范围for、STL中一些变化
  9. 取消高速省界收费站驶入“快车道”,我们距智能交通还有多远?
  10. 红外避障模块c语言编写程序,红外避障模块(红外对管)51单片机驱动源程序