今天的任务:简单的学习了 冒泡排序算法、选择排序算法
一、冒泡排序算法的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排public class MaoPaoSort {
public static void main(String[] args){ int arr[] = {3,2,5,8,9,10,1,4}; int temp; // 从此一个位开始循环数组 for (int i = 0; i < arr.length-1; i++) { // 从第i+1为开始循环数组 for (int j = i+1; j < arr.length; j++) { // 如果前一位比后一位小,那么就将两个数字调换 // 这里是按降序排列 // 如果你想按升序排列只要改变符号即可 if (arr[i]>arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } System.out.print(arr[i]); } System.out.print("冒泡排序:"); for(int i = 0;i<arr.length;i++) { System.out.print(arr[i] + " "); } } }
运行结果 :
选择排序:1 2 3 4 5 8 9 10
二、选择排序算法:搜索整个值列,以找到最小值。将该值与值列中第一个位置上的值进行交换。搜索剩下的值列(第一个除外),以找到其中的最小值,然后将其与值列中第二个位置上的值进行交换。对值列中的每个位置重复该过程。在算法结束时,就完成了对值列的排序。
public class SelectionScor{ public static void main(String[] args){ int arr[] = {3,2,5,8,9,10,1,4}; int temp; /* * 循环整个数组(其实这里的上界为 arr.length - 1 即可,因为当 i= array.length-1 * 时,最后一个元素就已是最大的了,如果为array.length时,内层循环将不再循环),每轮假设 * 第一个元素为最小元素,如果从第一元素后能选出比第一个元素更小元素,则让让最小元素与第一 个元素交换 */ for (int i = 0; i < arr.length; i++) { int lowIndex = i;// 假设每轮第一个元素为最小元素 for (int j = i + 1; j < arr.length; j++) { // 如果发现有比当前array[lowIndex]更小元素,则记下该元素的索引 if (arr[j] < arr[lowIndex]) { lowIndex = j; } } //交换位置 temp = arr[i]; arr[i] = arr[lowIndex]; arr[lowIndex] = temp; } System.out.print("选择排序:"); for(int i=0;i<arr.length;i++){ System.out.print( arr[i] + " "); } } }
运行结果 :
选择排序:1 2 3 4 5 8 9 10
相关推荐
数据结构课设《内部排序算法比较》课程设计报告
《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由...
本次README修订为算法仓库Algorithms的第100次commit,首先我们庆祝自2016年8月4日本仓库建立以来Dev-XYS在算法学习方面取得的显著进步! 这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,...
问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0,1])上测试以上算法。 B.结果...
全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法 全新修订的代码 全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用 与实际应用相结合 在...
CS-261-Assignment-1 ...作业说明:这项作业是为了对algorihms类进行分析,因此,按预期,第一个作业是对4种不同的排序算法(例如合并排序和冒泡排序)进行最终化。 用c编写的4种不同的排序程序。 程序示例运行:
| BM 算法的改进的算法 SUNDAY ALGORITHM 32 | 最短公共祖先(两个长字符串) 33 | 最短公共祖先(多个短字符串) 33 Geometry 计算几何 34 | GRAHAM 求凸包 O(N * LOGN) 34 | 判断线段相交 34 | 求多边形...
)按章节顺序分别讨论了基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方 法,归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并比较了各种 排序方法的...
)按章节顺序分别讨论了基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方 法,归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并比较了各种 排序方法的...
十二、快速排序算法 (快速排序算法3篇文章) 十二(续)、快速排序算法的深入分析 十二(再续):快速排序算法之所有版本的c/c++实现 十三、通过浙大上机复试试题学SPFA 算法 十四、快速选择SELECT算法的深入分析与...
7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 7.7.2 分割策略 7.7.3 小数组 7.7.4 实际的快速排序例程 7.7.5 快速排序的分析 7.7.6 选择问题的线性期望时间算法...
出版日期:2002年7月 ISBN:703010498 序 前言 第1章 线性代数方程组的解法 1.1全主元高斯-约当(Gauss-Jordan)消去法 1.2LU分解法 1.3追赶法 1.4五对角线性方程组解法 1.5线性方程组解的迭代改善 1.6范德蒙...
一、sort文件夹是排序算法 八大排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序 基数排序(桶排序) 希尔排序 堆排序 三、basic文件夹是基础相关 Java简单的算法题,目前有20道 递归知识~ 四、datastructure ...
11) 排序 12) 填充序列数 (注:支持批量\par\tab\asc\nul) 13) 字符/串拆分、合并、翻转 14) 定位匹配括号 15) 多种右键菜单 (注:鼠标中键或Shift/Alt/Ctrl+鼠标右键) 16) 便捷时间显示 ...
排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些...排序算法的一般下界7.9 桶式排序7.10 外部排序7.10.1 为什么需要一些新的算法7.10.2 外部排序模型7.10.3 简单算法7.10.4 多路合并7.10.5 多相...
其内容和章节编排与1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。本书概念表述严谨,逻辑推理严密,语言精炼,用词达意。...
基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于...
分享一套python版的数据结构算法的视频教程——《零基础征服数据结构算法Python版》,2023年4月完结新课,提供配套的代码和课件下载! 《零基础征服数据结构算法Python版》课程以985院校为授课标准,结合大厂面试所...
排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些...排序算法的一般下界7.9 桶式排序7.10 外部排序7.10.1 为什么需要一些新的算法7.10.2 外部排序模型7.10.3 简单算法7.10.4 多路合并7.10.5 多相...