冒泡排序的改进
来源:互联网 发布:linux pyqt5 编辑:程序博客网 时间:2024/05/17 02:26
/*Name: BubbleSort Copyright: Author: huowolf Date: 05/07/15 16:18Description: 改进的冒泡排序的实现 */#include <iostream>using namespace std;#define len 7int arr[]={48,62,35,77,55,14,35,98};void BubbleSort(int a[],int length); void Output(int a[],int length);int main(){BubbleSort(arr,len); Output(arr,len);return 0;}void swap(int &a,int &b){ a=a^b; b=a^b; a=a^b;}void BubbleSort(int a[],int length){int i,j,lastExchangeIndex;i = length;while (i >0) // i>0 表明上一趟曾进行过记录的交换 { lastExchangeIndex = 1; for (j = 0; j < i; j++){ if (a[j+1]<a[j]) { swap(a[j+1],a[j]); lastExchangeIndex = j; } } i = lastExchangeIndex;// 一趟排序中无序序列中最后一个记录的位置} } void Output(int a[],int length){for(int i=0;i<=length;i++)cout<<a[i]<<" "; }/*冒泡排序的改进基于以下两种思考:1.如果上面代码中,里面一层循环在某次扫描中没有执行交换,则说明此时数组已经全部有序列,无需再扫描了。因此,增加一个标记,每次发生交换,就标记,如果某次循环完没有标记,则说明已经完成排序。2.如果R[0..i]已是有序区间,上次的扫描区间是R[i..n],记上次扫描时最后一次执行交换的位置为lastExchangeIndex,则lastExchangeIndex在i与n之间,不难发现R[i..lastExchangeIndex]区间也是有序的,否则这个区间也会发生交换;所以下次扫描区间就可以由R[i..n] 缩减到[lastExchangeIndex..n]。 */
0 0
- 冒泡排序的改进
- 冒泡排序的改进
- 冒泡排序的改进
- 冒泡排序的改进
- 改进的冒泡排序
- 改进的冒泡排序
- 改进的冒泡排序
- 改进的冒泡排序
- 冒泡排序的改进
- 冒泡排序的改进算法
- 改进的双向冒泡排序
- 改进的冒泡排序算法
- 冒泡排序法的改进
- 改进的冒泡排序算法
- 冒泡排序的 改进版
- 改进的冒泡排序算法
- 对冒泡排序的改进
- 改进的冒泡排序算法
- JAVA面向对象第二天
- 编程笔记1
- Android中的Handler详解以及和Thread的区别
- 用程序生成另一个程序
- [LeetCode][Java] Longest Substring Without Repeating Characters
- 冒泡排序的改进
- HDU 1407测试你是否和LTC水平一样高
- Cocos2dx3.6 在Mac下的环境搭建
- 八端
- 马其顿驱动电源项目调光LED闪烁原因
- 5.4-5
- 学习html(7)
- 不能做一只井底之蛙
- 二维数组的列排序