今天的任务:简单的学习了 冒泡排序算法、选择排序算法
一、冒泡排序算法的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第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
相关推荐
"数据结构C语言课设-《内部排序算法比较》" 本课程设计的主要目的是比较不同的内部排序算法,包括冒泡排序、直接插入排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序等。这些算法的实现都基于C语言,并...
《排序和算法大全C++》是一本专注于C++编程语言中的排序算法和各种算法的综合资源,旨在帮助程序员深入理解和掌握这些重要的计算技术。在这个压缩包中,包含了丰富的C++实现的各种排序算法,以及可能涉及的其他算法...
在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,它可以帮助我们快速查找、分析和处理大量数据。本篇将深入探讨Java中实现的几种...
常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。而在多线程环境中,我们可以利用多核处理器的优势,将排序任务分割到不同的线程中进行,以提高排序速度。 在C#中实现多线程排序,可以采用...
文章选自《河南职技师院学报》1999年12月刊,主要目的是通过对不同排序算法进行联机实验,分析这些算法在实际运行中的性能表现,特别是关注它们的耗时情况。这对于理解各种排序算法的实际应用效果、评估算法效率以及...
《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由...
在编程领域,排序算法是计算机科学的基础之一,尤其在Java编程中,理解并掌握各种排序算法至关重要。这个压缩包文件提供了Java实现的常见排序算法,对于初学者和有经验的开发者来说,都是一个宝贵的资源。 首先,让...
在计算机科学中,排序算法是数据结构领域的重要组成部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序(如升序或降序)排列。本文将深入探讨八大经典排序算法,尤其是插入排序。 首先,我们来理解插入...
第6章 "排序" 讨论了如何有效地组织和排序大量的天文数据,这对于数据分析和预测至关重要。 第7章 "儒略日" 详细解释了儒略日系统,这是天文学中常用的日期和时间表示方式,确保了全球同步。 第8章 "复活节日期" ...
2020年4月20日的更新可能意味着题库已经包含了一些新的或者经过修订的题目,以保持其时效性和挑战性。 描述中提到"蓝桥杯算法题库的算法提高部分",这暗示了该资料集主要面向那些已经有基础算法知识,想要进一步...
"VB070-数组排序 源代码"这个压缩包很可能是包含了上述排序算法的VB实现,通过学习和分析这些源代码,你可以深入理解排序算法的工作原理,并能应用于实际项目中。在编程实践中,了解和掌握不同的排序算法有助于优化...
在2022年2月5日的韩老师的十七课时中,重点讲解了多目标优化问题以及解决此类问题的NSGA-II算法。NSGA-II(Non-dominated Sorting Genetic Algorithm II)是非支配排序遗传算法的第二代,是多目标优化领域中的一个...
- **描述**:使用选择排序算法对一个数组进行排序。 - **实现思路**: - 从未排序的部分中选出最小(或最大)的元素。 - 将其放到已排序部分的末尾。 - 重复上述步骤直到所有元素都被排序。 #### 知识点二十九:...
2. 算法基础:排序(快速排序、归并排序、堆排序等)、搜索(二分查找、深度优先搜索、广度优先搜索等)。 3. 动态规划:解决最优化问题,如背包问题、最长公共子序列等。 4. 图论:最短路径算法(Dijkstra、Floyd-...
#### 四、插入排序算法 - **插入排序伪代码**: ```plaintext INSERTION-SORT(A, n) // A[1..n] 是待排序数组 for j ← 2 to n do key ← A[j] i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i]...
通过以上分析,我们可以看出这些习题解答涵盖了排序算法的比较、日期的数学计算、基本的搜索算法及其循环不变式的验证、多项式的渐进分析等多个方面。这些知识点对于学习和理解算法设计的基础非常重要。
本次README修订为算法仓库Algorithms的第100次commit,首先我们庆祝自2016年8月4日本仓库建立以来Dev-XYS在算法学习方面取得的显著进步! 这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,...
- 问题2.2-2:假设FIND-MIN算法能够在\(O(s-r)\)时间内返回数组\(A\)中索引\(r\)到\(s\)之间的最小元素的索引,则可以选择实现选择排序算法(SELECTION-SORT)。 以上是对文档中提及的关键知识点的详细解释。这些...