zoukankan      html  css  js  c++  java
  • 排序-冒泡排序

    大部分的互联网校招的笔试都会有算法与数据机构的题目,为了准备笔试,开始算法与数据结构的学习。

    本文是基础的冒泡排序,此系列学习都用的C++.

     冒泡排序语言叙述:

    假设要求递增排序。选取第一个元素,遍历后面元素并与之比较,如果大于,则交换2者位置;重复上述过程,直到最后一个元素。

    代码如下:

    bool BubbleSort(int *Array){
    	int temp;
    	for(int i = 0; i < length(Array); i++){
    		for(int j = 0; j < length(Array); j++){
    			if(Array[j] > Array[j+1]){
    				temp = Array[i];
    				Array[i] = Array[j];
    				Array[j] = temp;
    			}
    		}
    	}
    	return true;
    }
    

    这样的代码效率太低,因为不管这次循环有没有产生交换,都会把这次遍历跑完,其实没有必要这样,如果没有发生交换,则可以跳出本次循环,进行下一次循环,所以改进后如下:

    bool BubbleSort(int *Array){
    	int temp;
    	for(int i = 0; i < length(Array); i++){
    		int flag = 0;//标志为0表示没有发生交换
    		for(int j = 0; j < length(Array); j++){
    			if(Array[j] > Array[j+1]){
    				temp = Array[i];
    				Array[i] = Array[i+1];
    				Array[i+1] = temp;
    				flag = 1;//发生交换,标志为1
    			}
    		}
    		if (flag == 0) break;//若无交换,结束本次循环
    	}
    	return true;
    }
    

    冒泡排序,有嵌套的for循环,所以时间复杂度为O(n2), 空间复杂度为O(1).

  • 相关阅读:
    SpringMvc的执行机制和环境搭建
    Flexbox,更优雅的布局
    Laravel框架 mysql 数据库 —— 基本使用
    在 Windows 上安装 Laravel 5.x
    javascript 中的借鸡生蛋
    由斐波那契数列所引发的性能优化
    成为一名优秀的Web前端开发者
    H5之contenteditable
    ionic 集锦
    vm10虚拟机安装Mac OS X10.10教程[转]
  • 原文地址:https://www.cnblogs.com/ee2213/p/3972484.html
Copyright © 2011-2022 走看看