码迷,mamicode.com
首页 > 其他好文 > 详细

冒泡有三种方式你知道吗?

时间:2014-10-11 00:25:54      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   div   log   工作   

   前言

     说实话今天给我触动的蛮大的,今天无意中看到一位同事在跟另一位同事交流,看到他们打开一个网站,然后嘀嘀咕咕的。出于好奇然后凑上去了解到原来是一位同事自己的开发了一个网站,网站的功能跟淘宝的一样,可以商家入驻,然后还可以与微信公众群进行相关联的一系列互动,了解到也是自己一个人做的。然后瞬间感觉自己好矮小,除了完成工作的上的一些任务,自己真没什么拿的出手的,所以我想完善自己的博客,将博客作为我的作品。好了,下面进入正题,今天分享的就是冒泡算法的三种方式。

   最简单的排序实现

      

 1    public static IList<T> BubbleSort<T>(IList<T> arr) where T : IComparable<T>
 2         {
 3             int length = arr.Count();
 4             for (int i = 0; i < length; i++)
 5             {
 6                 for (int j = i + 1; j < length; j++)
 7                 {
 8                     if (arr[i].CompareTo(arr[j]) > 0)
 9                     {
10                         var temp = arr[i];
11                         arr[i] = arr[j];
12                         arr[j] = temp;
13                     }
14                 }
15             }
16             return arr;
17         }

     这上面严格意义上说,并不算冒泡算法。因为不能满足“两两比较的思想”,只能算是最最简单的交换排序。

     真正意义的冒泡排序

 1    public static IList<T> BubbleSort<T>(IList<T> arr) where T : IComparable<T>
 2         {
 3             int lenght = arr.Count();
 4             for (int i = 0; i < lenght; i++)
 5             {
 6                 for (int j = lenght - 1; j > i; j--)
 7                 {
 8                     if (arr[j - 1].CompareTo(arr[j]) > 0)
 9                     {
10                         var temp = arr[j - 1];
11                         arr[j - 1] = arr[j];
12                         arr[j] = temp;
13                     }
14                 }
15             }
16             return arr;
17         }

     上面的冒泡可以看出,当数组已经排序好了,但是依然循环排序,所以可以对此可以做出优化新增标志位flag来判断

    优化的冒泡

 1   public static IList<T> BubbleSort<T>(IList<T> arr) where T : IComparable<T>
 2         {
 3             int lenght = arr.Count();
 4             bool flag = false;
 5             for (int i = 0; i < lenght; i++)
 6             {
 7                 flag = true;
 8                 for (int j = lenght - 1; j > i; j--)
 9                 {
10                     if (arr[j - 1].CompareTo(arr[j]) > 0)
11                     {
12                         var temp = arr[j - 1];
13                         arr[j - 1] = arr[j];
14                         arr[j] = temp;
15                         flag = false;
16                     }
17                 }
18                 if (flag)
19                     break;
20             }
21             return arr;
22         }

   总结:自己对于算法这块还很欠缺,所以这段时间会看算法方面的书籍,以提升自己在写程序方面的效率。看完之后的我也会更新到博客上面,希望大家不吝赐教,感谢!

冒泡有三种方式你知道吗?

标签:style   blog   color   ar   for   sp   div   log   工作   

原文地址:http://www.cnblogs.com/yansong-xu/p/4017959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!