当前位置:   article > 正文

(入门)C#中的常用排序算法——冒泡排序(其一)_c# 冒泡排序

c# 冒泡排序

(感谢亲爱的读者朋友,制作不易,嫖者安康)

        在茫茫的代码大陆上,存在着许多排序算法。但在这些算法中,有三个扛把子算法,它们是:

                冒泡排序

                插入排序

                选择排序

        现在,先来介绍冒泡排序

正式开始

默认从小到大开始排序(从大到小的思路其实差不多,主要是我实在是太懒惰,聪明的读者肯定会写哒)

        冒泡排序,重复的、有方向性的遍历数组中的每一个元素,每一次比较其中的两个相邻元素,将其中较为大的元素浮到后面去。以此类推,重复排序完数组中的每一个元素后,数组便被Sort完毕。

        很简单,对不对……

        那就让我们来整理一下代码思路

代码思路

我们先假设存在一个无序的数组M[1,2,3,4,......,n-1,n] 

        首先是初始状态:

                混乱、无序、无从下手。

        接着是开始第一次冒泡:

                从后往前有方向性的依次比较两个元素的大小,即:

                比较

                        ( M[n] , M[n-1] ) , ( M[n-1] , M[n-1] ) ...... ( M[3] , M[2] ) , ( M[2], M[1] )   就像这样去比较

                同时 

                         若存在:M[k+1] < M[k] ,则交换它们的位置;反之,就不甩它,继续下一组冒泡。                

        那,聪明的,你知道吗,要进行多少次冒泡呢?

        n-1 次冒泡。

        

        没错,在第二次冒泡时,原来的无序数组M[1,2,3,4,......,n-1,n]已经摇身一变成为了M[1]是原数组的最小值与无序数组M[2,3,4,......,n-1,n]。

        最后,会在第 n-1 次冒泡,原来的无序数组变为有序数组,Bubble Sort 完毕。

        康康这个动画(网上有的,自由转载):

        

        是不是一下子就懂了 

        关于这个算法的时间复杂度,我是真的不想写了。推荐大家去康康这位博主“道为骨”的大O算法介绍吧。

代码介绍

        (其实大家都是来这里嫖代码的,对吧)

        紧接着,给大家上一段冒泡排序的代码

  1. public void Bubble_sort(int[] List)
  2. {
  3. int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
  4. bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
  5. while((t<List.Length) && !Finish)
  6. {
  7. Finish = true;
  8. for (i = 0; i < List.Length - t; i++)
  9. {
  10. if (List[i] > List[i + 1])
  11. {
  12. Finish = false;
  13. Temp = List[i];
  14. List[i] = List[i + 1];
  15. List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
  16. }
  17. }
  18. t++;
  19. }
  20. }

还不过瘾的话,我把它的排序效果放出来哈

这里是项目代码:

  1. using System;
  2. namespace Bubble_Sort
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. int[] Example = new int[] {-99,-4323,23,42,8848,114514,234 };
  9. Bubble bubble = new Bubble();
  10. bubble.Bubble_sort(Example);
  11. foreach(var item in Example)
  12. {
  13. Console.Write(item+"," );
  14. }
  15. Console.Read();
  16. }
  17. }
  18. public class Bubble
  19. {
  20. public void Bubble_sort(int[] List)
  21. {
  22. int i, t=1, Temp;//t是目前冒泡的次数,就是小于n-1;i是数组中的第几位元素;Temp是中间替换量,大家都懂哒
  23. bool Finish = false;//康康你到底冒泡冒完没有,刚开始是没有,所以判为F
  24. while((t<List.Length) && !Finish)
  25. {
  26. Finish = true;
  27. for (i = 0; i < List.Length - t; i++)
  28. {
  29. if (List[i] > List[i + 1])
  30. {
  31. Finish = false;
  32. Temp = List[i];
  33. List[i] = List[i + 1];
  34. List[i + 1] = Temp;//这里就是换数据的地方,其实可以简单化的,但是啊,我就是懒惰,聪明的,你,会写的。
  35. }
  36. }
  37. t++;
  38. }
  39. }
  40. }
  41. }

 这里是结果:

        -4323,-99,,23,42,234,8848,114514,

OK啦,冒泡算法就给同志们说完了,很感谢大家的阅读(嘿嘿,点赞,嘿嘿,打赏)。

此外,另外两个算法我会给大家普及哒。

大家还是可以去看看大O表示法,去看看这个冒泡算法的时间复杂度,这个还是要考虑机效哒。

新人最好不要嫖代码哦,自己手打,一两遍就学会了。

制作不易,嫖者安康,转载给我说一声喔!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/513270
推荐阅读
相关标签
  

闽ICP备14008679号