首页 > 编程语言 > 详细

[算法]各种排序算法的C++实现

时间:2019-08-03 19:21:13      阅读:90      评论:0      收藏:0      [点我收藏+]

我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。

  排序算法大体可分为两种:

    一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序选择排序插入排序归并排序堆排序快速排序等。

    另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序基数排序桶排序等。

下表给出了常见比较排序算法的性能:

 

技术分享图片

为了便于以下描述,接下来全部算法的排序对象均为乱序数组int a[n];


 

  1. 冒泡排序(BubbleSort)

思路:对相邻的两个元素进行比较,这样每轮比较完当前最大(小)的元素就会移到尾部,如此重复n轮,便可实现排序。

实现:

 1 void bubbleSort(int a[],int begin,int end)
 2 {
 3   for(int i = begin;i<end;i++)
 4   {
 5     for(int j = i+1;j<end;j++)
 6     {
 7       if(a[i]>a[j])
 8       {
 9         std::swap(a[i],a[j]);
10       }
11     }
12   }
13 }

具体排序过程如图:

技术分享图片

 

总结:

最简单排序算法,稳定,由于两层循环因此复杂度为O(n2)。(但是想到当年第一次找工作时被问到,结果不出所料没有答出来,真是让我觉得难堪的算法。)


 

本文参考:https://www.cnblogs.com/eniac12/p/5329396.html#s1

[算法]各种排序算法的C++实现

原文:https://www.cnblogs.com/Swetchine/p/11295657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!