zoukankan      html  css  js  c++  java
  • 基本排序算法及分析(二):冒泡排序

    冒泡排序和改进的冒泡排序

     1/*-------------------------------------------------------------------------------------------
     2Bubble_sort.h
     3冒泡排序: 时间复杂度为O(N^2)
     4改进的冒泡排序: 时间复杂度仍为O(N^2)
     5    一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序
     6    设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
     7-------------------------------------------------------------------------------------------*/

     8#ifndef BUBBLE_SORT_H
     9#define BUBBLE_SORT_H
    10
    11#include "typedef.h"
    12#include "swap.h"
    13
    14//冒泡排序
    15void Bubble_sort(T *a, int n)
    16{
    17    for(int i=n-1; i != 0--i)
    18        for(int j=0; j != i; ++j)
    19            if(a[j+1< a[j]) swap(a[j+1],a[j]);
    20}

    21
    22//改进的冒泡排序
    23void Improved_Bubble_sort(T *a, int n)
    24{    
    25    for(int i=n-1; i != 0--i)
    26    {
    27        bool flag = true;
    28        for(int j=0; j != i; ++j) //这一趟遍历如果没有交换,则已完成排序
    29            if(a[j+1< a[j])  { swap(a[j+1],a[j]); flag = false; }
    30        if(flag == truebreak;
    31    }

    32}

    33
    34#endif



    幸运草 2009-04-22 16:46 发表评论
  • 相关阅读:
    Linux监控内核SNMP计数器
    wireshark使用手册
    【LinuxShell】echo用法详解
    【Coredump】调试之旅
    汇编指令
    从零开始学Java (五)条件选择
    从零开始学Java (四)输入输出
    Dart基础
    树相关
    递归简介
  • 原文地址:https://www.cnblogs.com/liyuxia713/p/2540781.html
Copyright © 2011-2022 走看看