前两天参加了上海微创的笔试,有这个题,当时没写出来,今天搞懂了,就贴出来与大家分享。
解释:如果一个序列是int n[]={1,2,3,4,5,6,7,8,9} , 用正常的冒泡排序需要排8次才行,优化之后1次就好,也就是说序列越接近于正常序列,改进之后的冒泡排序的次数就越少,这样会给一个冒泡排序算法带了很大的效率。
思想:添加一个boolean变量用来判断冒泡是否是已经排好了顺序,如果boolean的值为false,说明是已经排好了,如果boolean的值true,说明没有排好,继续排。
代码:
//冒泡排序
public static void bubble_Sort(int[] a)
{
boolean change = true;
int temp = 0;
for(int i=a.length-1; i>0 && change; i--)
{
change = false; // 改变boolean为排好状态,通过后面if判断是否发生交换
for(int j=1; j<=i ; j++)
{
if(a[j-1] > a[j])
{
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
change = true; //如果交换发生,说明数列是没有排好的,改变boolean
}
}
}
}
分享到:
相关推荐
在"最新冒泡排序c++的写法"中,我们可以探讨以下几个重要的知识点: 1. **冒泡排序的基本原理**:冒泡排序的核心思想是重复遍历待排序的序列,每次遍历时将最大的(或最小的)元素逐渐“冒”到序列的末尾。这个过程...
根据给定的信息,我们可以深入探讨冒泡排序算法的原理、实现方法以及代码分析。 ### 冒泡排序算法原理 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的...
这里我们主要探讨的是使用Java实现的几种经典排序算法,包括直接选择排序、堆排序、冒泡排序、快速排序、直接插入排序、折半插入排序、Shell排序、归并排序、桶式排序和基数排序。这些算法各有特点,适用于不同的...
这里我们讨论了十种不同的排序算法,它们分别是:冒泡排序、插入排序、选择排序、快速排序、归并排序以及堆排序和希尔排序。下面将对这七种排序算法进行详细的解释。 1. **冒泡排序(Bubble Sort)**: 冒泡排序是...
使用快速排序或归并排序代替简单的插入排序或冒泡排序可以显著提高排序速度。 - **数据结构的选择**:选择合适的数据结构同样重要。例如,在需要频繁插入和删除元素的情况下,链表相比数组更为合适。 - **数组与指针...
在排序算法方面,可考虑快速排序、归并排序或堆排序替代冒泡排序和插入排序。对于数据结构的选择,链表适合频繁的插入和删除操作,而数组则适用于连续访问。在某些编译器中,如Keil,数组可能比指针更高效,而在其他...
1. **冒泡排序**:通过不断地交换相邻元素来将较大的元素逐渐“冒”到数组的一端。时间复杂度为O(n^2),适合小规模数据或部分有序的数据。 2. **选择排序**:每次找到未排序部分中的最小(或最大)元素,然后将其放...
- 算法选择:根据问题选择最优算法,如用二分查找替代顺序查找,快速排序替代冒泡排序。 - 数据结构:选择合适的数据结构,如数组、链表、树等,以提升数据操作效率。 以上策略的运用需要结合具体项目需求和...
1. 冒泡排序:通过不断交换相邻的逆序元素进行排序,时间复杂度为O(n^2)。 2. 选择排序:每次找到未排序部分的最小值并放到正确位置,时间复杂度为O(n^2)。 3. 插入排序:将每个元素插入到已排序部分的正确位置,...
同样地,快速排序、合并排序等高级排序算法相较于简单的插入排序或冒泡排序能够处理更大规模的数据集,并且执行速度更快。 数据结构的选择也同样重要。在涉及频繁的插入和删除操作时,链表相比于数组具有更高的效率...
1. **算法基础**:包括但不限于冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等基本排序算法;二分查找、线性查找等搜索算法;以及最小生成树、拓扑排序、深度优先搜索、广度优先搜索等图和树的算法。 ...
5. `O(n^2)`:平方时间复杂度,适用于简单的排序算法如冒泡排序等。 6. `O(2^n)`:指数时间复杂度,适用于递归实现的斐波那契数列等。 7. `O(n!)`:阶乘时间复杂度,适用于某些组合优化问题。 综上所述,选择合适的...
冒泡排序 O(n^2) 选择排序 O(n^2) 插入排序 O(n^2) — 对于基本有序的数列效率最高 希尔排序 O(nlogn) — 插入排序的优化 归并排序 O(nlogn) — 需要额外的空间存储 快速排序 O(nlogn ~ n^2) — 最常用,但对有序...
16-算法思想-冒泡排序.mp4 17-二分思想优化排序-快速排序和原地快拍.mp4 18-15题三数之和.mp4 19-二分法优化leftpad函数的性能.mp4 20-回溯和递归思想 01-1-前端为什么要学算法.mp4 01-2-如何把代码提交到...
16-算法思想-冒泡排序.mp4 17-二分思想优化排序-快速排序和原地快拍.mp4 18-15题三数之和.mp4 19-二分法优化leftpad函数的性能.mp4 20-回溯和递归思想入门 01-1-前端为什么要学算法.mp4 01-2-如何把代码提交到...
16-算法思想-冒泡排序.mp4 17-二分思想优化排序-快速排序和原地快拍.mp4 18-15题三数之和.mp4 19-二分法优化leftpad函数的性能.mp4 20-回溯和递归思想入门 01-1-前端为什么要学算法.mp4 01-2-如何把代码提交...
4. 算法:算法是解决问题的步骤和方法,如排序(快速排序、归并排序、冒泡排序等)、查找(二分查找、哈希查找等)、图算法(Dijkstra、Floyd等)。熟练掌握各种算法有助于提升代码质量和运行效率。 5. Spring全家...
* 几个排序查找算法:冒泡排序、选择排序、插入排序、归并排序、二分查找。 数据库知识点 * 存储过程和函数:存储过程是数据库中的一组 SQL 语句的集合,函数是带有返回值的存储过程。 * 触发器:是在数据库中自动...
同时,学习基础算法,如排序(快速排序、归并排序、冒泡排序等)、搜索(二分查找、深度优先搜索、广度优先搜索等)和动态规划等。 3. **Python内置模块**:Python拥有丰富的内置模块,例如`math`模块用于数学运算...