• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
feng_er
博客园    首页    新随笔    联系   管理    订阅  订阅

冒泡排序

冒泡排序:

以升序排列为例,我们希望得到一个从左至右递增的序列,那么右面元素的关键字一定比左面的大,于是有了一种朴素的思想,每次比较左右两个数,将大的数放在右面,若有n个数,按上述方法比较完i=1:n,则将这n个书中最大的数放在最右边,那么下一次只需要比较i=1:n-1,即可确定第二大的数。所以一共需要n-1轮比较,确定n-1个大数。因为这种排序方法好像冒泡一样把较大的数像泡泡一样一个一个的从底下冒上来,故称作冒泡排序。代码如下:

 

 1 void sort(int *p, int n)//数组p[]和其元素个数n 
 2 {   
 3     int temp;
 4     for(int i = 1; i<n; i++)  //需要n-1轮比较 
 5         for(int j = 0; j<n-i; j++) //每轮从0到n-i-1中找到最大的数,将其置于右端 
 6             {
 7                 if(p[j]>p[j+1])
 8                 {
 9                     temp = p[j];
10                     p[j] = p[j+1];
11                     p[j+1] = temp;
12                 }
13             }
14 }

冒泡排序的复杂度:两层嵌套循环的排序,所以时间复杂度为o(n^2),冒泡排序理解简单,但时间复杂度大;

 

               

posted @ 2017-07-06 15:36  feng_er  阅读(193)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3