Java代码来实现-经典排序算法
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代码来实现-经典排序算法相关推荐
- 选择排序java代码_JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- java实现十大经典排序算法
文章目录 前言 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 鸡尾酒排序(Cocktail Sort) 希尔排序(Shell ...
- java冒泡排序_JAVA实现经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序)...
冒泡排序 依次比较相邻的元素,若发现逆顺序,则交换.小的向前换,大的向后换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成. import ...
- 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法
排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...
- java 3 9 2 6数字排序_GitHub - JourWon/sort-algorithm: 史上最全经典排序算法总结(Java实现)...
史上最全经典排序算法总结(Java实现) 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗, ...
- 终于,把十大经典排序算法汇总了!(Java实现版)
转载自 终于,把十大经典排序算法汇总了!(Java实现版) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在" ...
- 十大经典排序算法详细总结 图形展示 代码示例
文章目录 十大经典排序算法详细总结 0.排序算法说明 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.希尔排序( ...
- 十大经典排序算法动画与解析,看我就够了!(附代码)
作者 | 程序员小吴 来源 | 五分钟学算法(ID:CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...
- 十大经典排序算法(Java实现)
排序算法的重要性不言而喻,为了加深对这十种算法的理解,固写此文. 目录 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort ...
最新文章
- C# 开启及停止进程
- python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
- Collections接口下的Comparetor类和Comparable接口排序
- MATLAB移植C的小结
- python autohotkey_PyAutoGUI-python版的autoit/AHK
- [CTSC2008]网络管理Network
- 论文|SDNE的算法原理、代码实现和在阿里凑单场景中的应用说明(附代码)
- 转:windows xp 安装MYSQL 出现Error 1045 access denied 的解决方法
- asp mysql 留言本_手把手教你设计ASP+ACCESS留言本
- BLUE引擎M2运行几天后就不可以施放合击技能的方法
- Hive实现笛卡尔积
- python控制51单片机的红绿灯_基于51单片机的交通灯控制设计
- Free Pascal初次体验(有亮点哦)
- 自娱自乐的FreeRTOS——config.h配置文件详解
- 终于把所有的 Python 库都整理出来啦,赶紧收藏!!!
- python sub函数用法_Python Pandas dataframe.sub()用法及代码示例
- 金士顿服务器内存条怎么看型号,Win10怎么查看内存条型号?
- 一个 24 通道 100Msps 逻辑分析仪
- C++主流IDE推荐
- 豆瓣评分9.6,推荐一本人工智能入门书籍《21天学通Python》
热门文章
- Machine Learning Pre-Basics
- 一个2层隐层神经网络解决抑或问题
- 程序员从普通二本毕业的真实薪资,记录一路走来的路
- 区块链相关术语(中英对照)
- python实现图像文件等比例压缩
- 单双节锂电池6-8.4V升压9V ,12V,24V快充PD升压系统解决方案
- CSS让5个20%div排成一行
- 【 C++11 】列表初始化、声明、范围for、STL中一些变化
- 取消高速省界收费站驶入“快车道”,我们距智能交通还有多远?
- 红外避障模块c语言编写程序,红外避障模块(红外对管)51单片机驱动源程序