请选择 进入手机版 | 继续访问电脑版
虚位以待    招租QQ:244594752    尺寸:960x60
终身VIP需技术指导请加(官方QQ :244594752 )
加入我们,终身VIP只需159元,全站下载(老客户请联系我补差价即可升级)
查看: 160|回复: 1

C#之冒泡排序

[复制链接]

该用户从未签到

2212

主题

2244

帖子

7676

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7676
发表于 2018-7-29 19:35:07 | 显示全部楼层 |阅读模式
以前在学校的时候看过冒泡排序,看的时候挺明白的,但是自己写的时候就写不出来,在网上搜索了一下,发现网上的冒泡排序算法几乎都不符合冒泡排序的原理,虽然也能实现,但是不正宗。

冒泡排序从字面意思理解:应该是这样的,按照顺序从最下面一个(数组索引最大)上升到第一个:

所以最正宗的代码是这样的:


  //冒泡排序
        public void BubbleSort(double[] data)
        {
            for (int i = 0; i < data.Length - 1; i++)
            {
                for (int j = data.Length - 1; j >i; j--)
                {
                    if (data[j] > data[j - 1])
                    {
                        data[j] = data[j] + data[j - 1];
                        data[j - 1] = data[j] - data[j - 1];
                        data[j] = data[j] - data[j - 1];
                    }
                }
            }
        }

当然如果你喜欢最下底下的元素对应最小索引,那么代码是这样的:

复制代码
//冒泡排序
        public void BubbleSort(double[] data)
        {
            for (int i = 0; i < data.Length-1; i++)
            {
                for (int j = 0; j < data.Length-1-i; j++)
                {
                    if(data[j]>data[j+1])
                    {
                        data[j] = data[j] + data[j + 1];
                        data[j + 1] = data[j] - data[j + 1];
                        data[j] = data[j] - data[j + 1];
                    }
                }
            }
        }

至于下面这段代码就是网上大量存在的了,我觉得是最差的一种,虽然也能实现排序,但是它逻辑混乱,效率低,执行次数明显比上面两种多


public void PopSort(int[] list)
    {
      int i, j, temp;  //先定义一下要用的变量
      for (i = 0; i < list.Length - 1; i++)
      {
        for (j = i + 1; j < list.Length; j++)
        {
          if (list > list[j]) //如果第二个小于第一个数
          {
            //交换两个数的位置,在这里你也可以单独写一个交换方法,在此调用就行了
            temp = list; //把大的数放在一个临时存储位置
            list = list[j]; //然后把小的数赋给前一个,保证每趟排序前面的最小
            list[j] = temp; //然后把临时位置的那个大数赋给后一个
          }
        }
      }
    }

回复

使用道具 举报

该用户从未签到

0

主题

180

帖子

366

积分

禁止发言

积分
366
发表于 2018-8-23 08:00:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|妙想源码社区 积分提现

GMT+8, 2018-11-15 01:12 , Processed in 1.102659 second(s), 24 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表
 
FDGDF
客服QQ 妙想科技 244594752
【旺旺】 点击这里给我发消息
【邮箱】
244594752@qq.com
【地址】 湖南省常德市武陵区三姑巷77
【妙想科技】 【9188qhl.com】