【算法篇】/*冒泡排序 选择排序 反转排序 三大排序算法*/

简介: 【算法篇】/*冒泡排序 选择排序 反转排序 三大排序算法*/

hello各位小伙伴们,我依旧是你们熟悉的那个集美貌 智慧 优雅与一体的槿凉!最近呢也是学完了java基础部分,掌握的感觉还可以,然后把基本知识点又过了一遍,感觉自己马上就快成为编程大佬了哈哈哈。开个玩笑啦,那么javase学完,紧接着数据结构和算法不能落下了,那么今天呢就简单的来分享三个简单的排序算法,希望这些知识点对大家有点帮助,喜欢的小伙伴来个一键三连呐!

一:冒泡排序

基本思想:即现在有个数组arr,数组中有一些元素,现在我们要对这个数组里面的元素进行一个从小到大的排序,冒泡排序采用的思想就是比较相邻的元素值,如果满足条件就交换值,类似于水中的气泡小的往上冒,大的往下沉。

算法实现:

首先我们创建一个乱序数组:

int[] array= { 63, 4, 24, 1, 3, 15 };

接下来我们实现冒泡排序算法

publicvoidsort(int[] array) {
for (inti=1; i<array.length; i++) {
// 比较相邻两个元素,较大的数往后冒泡for (intj=0; j<array.length-i; j++) {
if (array[j] >array[j+1]) {
inttemp=array[j]; // 把第一个元素值保存到临时变量中array[j] =array[j+1]; // 把第二个元素值保存到第一个元素单元中array[j+1] =temp; // 把临时变量(也就是第一个元素原值)保存到第二个元素中                }
            }
        }

最后我们遍历输出排序后的数组:

*/publicvoidshowArray(int[] array) {
for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值        }
System.out.println();
    }

这个算法非常的简单昂,大家看看代码基本就能看懂了,如果有不懂的地方可以私信问我哈!这里给出完整代码实现:

publicclassBubbleSort {
publicstaticvoidmain(String[] args) {
// 创建一个数组,这个数组元素是乱序的int[] array= { 63, 4, 24, 1, 3, 15 };
// 创建冒泡排序类的对象BubbleSortsorter=newBubbleSort();
// 调用排序方法将数组排序sorter.sort(array);
    }
/*** 冒泡排序* * @param array 要排序的数组*/publicvoidsort(int[] array) {
for (inti=1; i<array.length; i++) {
// 比较相邻两个元素,较大的数往后冒泡for (intj=0; j<array.length-i; j++) {
if (array[j] >array[j+1]) {
inttemp=array[j]; // 把第一个元素值保存到临时变量中array[j] =array[j+1]; // 把第二个元素值保存到第一个元素单元中array[j+1] =temp; // 把临时变量(也就是第一个元素原值)保存到第二个元素中                }
            }
        }
showArray(array); // 输出冒泡排序后的数组元素    }
/*** 显示数组中的所有元素* * @param array 要显示的数组*/publicvoidshowArray(int[] array) {
for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值        }
System.out.println();
    }
}

二:直接选择排序

基本思想:在数组中确定一个元素,与其他的元素相比较,比这个元素大的往后走,比这个元素小的往前走,而不是交换相邻元素,直接选择排序的交换次数很少,速度比冒泡排序要快。

算法示例:(这里我拼了个图大家直接看第……趟排序的结果即可)


788cdcff9ec54af1b6fbd4b94927b80f.jpg

代码实现:

老规矩我们先定义一个乱序的数组:

int[] array= { 63, 4, 24, 1, 3, 15 };

接下来我们实现选择排序算法:

publicvoidsort(int[] array) {
intindex;
for (inti=1; i<array.length; i++) {
index=0;
for (intj=1; j<=array.length-i; j++) {
if (array[j] >array[index]) {
index=j;
                        }
                    }
// 交换在位置array.length-i和index(最大值)上的两个数inttemp=array[array.length-i]; // 把第一个元素值保存到临时变量中array[array.length-i] =array[index]; // 把第二个元素值保存到第一个元素单元中array[index] =temp; // 把临时变量也就是第一个元素原值保存到第二个元素中                }

接着我们遍历输出排序后的数组

publicvoidshowArray(int[] array) {
for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值                }
System.out.println();
            }
相关文章
|
12天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
54 8
|
12天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
42 7
|
25天前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
1月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
20 0
数据结构与算法学习十四:常用排序算法总结和对比
|
1月前
|
算法 搜索推荐 Java
数据结构与算法学习十三:基数排序,以空间换时间的稳定式排序,速度很快。
基数排序是一种稳定的排序算法,通过将数字按位数切割并分配到不同的桶中,以空间换时间的方式实现快速排序,但占用内存较大,不适合含有负数的数组。
24 0
数据结构与算法学习十三:基数排序,以空间换时间的稳定式排序,速度很快。
|
1月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
17 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
1月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
13 0
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
31 0
|
1月前
|
机器学习/深度学习 搜索推荐 算法
探索数据结构:初入算法之经典排序算法
探索数据结构:初入算法之经典排序算法
|
27天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。