• 冒泡算法


    在C#中说到排序的方法,相信大家都会首先想到冒泡排序,当然也还有其它的排序办法,如选择排序等等,本文就讲解一下平常用的最多的冒泡排序。

    首先我们看一下冒泡排序的原理,我们声明一个数组:

    1 //这种声明的话数组长度和后面的值必须保持一致才可以,
    2 //比如说你声明的数组长度是5,那么你后面必须有5个数值。
    3 int[] Temp01 = new int[5] { 10, 5, 28, 19 ,33};
    4 
    5 //集合,这样比较灵活,不必要指定长度
    6 List<int> list01 = new List<int>() { 10, 5, 28, 19 ,33};

    不管什么方式都可以,这里不做详细的介绍,主要看冒泡的原理,从这个集合 list01 中我们可以看到这5个数值都是没有经过排序的,那我们如何对其排序呢?

    冒泡排序就是将每相邻的两个数值进行比较,如果左边的那一个数值大于右边的那一个数值,则把这两个数值的位置交换,逻辑关系如下图所示:

    每相邻的两个数值都是按照这种规则进行比较,直到最后一个数值,那我们这个 list01 里面的数值最后的结果应该是:5,10,19,28,33

    只要理解了这个规则,那么就很容易在程序里面模仿出来了,这里用一个ListBox来做一个示例,在Form上面放置两个ListBox;

     

    从小到大排序:

    code:

     1  List<int> list = new List<int>();
     2         
     3         private void btn_asc_Click(object sender, EventArgs e)
     4         {
     5             this.list.Clear();
     6             this.lbx_result.Items.Clear();
     7             int temp = 0;
     8 
     9             //Get the data and convert to int type
    10             for (int i = 0; i < this.lbx_data.Items.Count; i++)
    11             {
    12                 list.Add(Convert.ToInt32(lbx_data.Items[i].ToString()));
    13             }
    14 
    15             //Sort
    16             for (int j = 0; j < list.Count; j++)
    17             {
    18                 for (int z = 0; z < j; z++)
    19                 {
    20                     //switch data
    21                     if (list[z] > list[z + 1])
    22                     {
    23                         temp = list[z];
    24                         list[z] = list[z + 1];
    25                         list[z + 1] = temp;
    26                     }
    27                 }
    28             }
    29 
    30             for (int m = 0; m < list.Count; m++)
    31             {
    32                 this.lbx_result.Items.Add(list[m].ToString());
    33             }
    34 
    35         }
    View Code
  • 相关阅读:
    2016年 河南工业大学校赛 D题.rqy的键盘
    2016年 河南工业大学校赛 C题.魔法宝石
    jqueryMobile导航
    jqueryMobile列表
    jqueryMobile
    停止css3动画
    导航条
    移动端前面必须加的两行代码
    标签页
    file上传图片预览(此方法支持app)
  • 原文地址:https://www.cnblogs.com/mystar/p/3277301.html
Copyright © 2020-2023  润新知