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

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

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

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

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

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

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

lsbData:表示原始数据,等待被排序。

lsbResult:原始数据排序之后的结果。

先看看排序结果是不是我们想要的:

从小到大排序:

反过来倒序排序:

从图上面可以看得出来已经达到了排序的目的,现在我们看看代码分析:

    List<int> list = new List<int>();       private void btnDesc_Click(object sender, EventArgs e){this.lsbResult.Items.Clear();this.list.Clear();int temp = 0;int ValueFirst = 0;int ValueSecond = 0;//其实直接用个控制台打印出来更简单,这里用ListBox是为了看上去效果比较明显一点。//这里先把需要排序的数值放到一个list里面去,因为在list里面去改变数值的位置比较//容易一些(相比改变ListBox中数值的位置而言要容易)for (int m = 0; m < lsbData.Items.Count; m++){list.Add(Convert.ToInt32(lsbData.Items[m].ToString()));}//外层循环for (int i = list.Count; i > 0; i--){for (int j = 0; j < i - 1; j++){//这里提前将每一个数值取出来,在DeBug的时候方便查看其结果。ValueFirst = Convert.ToInt32(list[j].ToString());ValueSecond = Convert.ToInt32(list[j + 1].ToString());if (ValueFirst > ValueSecond){//对相邻的两个值进行比较,将较大的那个值放到temp里面。//然后交换数值的位置temp = Convert.ToInt32(list[j].ToString());list[j] = list[j + 1];list[j + 1] = temp;}}//这里是倒序排序,如果想反过来的话只要修改一下For循环即可。this.lsbResult.Items.Add(list[i - 1].ToString());}           }

准备换工作了,所以回忆一下用过的一些知识,温故而知新嘛,如果园友们觉得对您有用,请顶一下,也是给我学习的动力,祝大家生活愉快!

温故而知新--冒个泡、排个序相关推荐

  1. Typescript 其实就想排个序和枚举取数

    Typescript 其实就想排个序和枚举取数 Typescript里的sort和C#差不多,但是略有不太一样,反正官方文档没说明白,就自己研究吧 list =list.sort((n1,n2) =& ...

  2. 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    1.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 思想:用数组来存这40亿个数,而且只能用bit来表示.why? ...

  3. 在行列都排好序的矩阵中找数

    题目] 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的.实现一个函数,判断K 是否在matrix中. 例如: 0 1 2 5 2 3 4 7 4 4 ...

  4. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)

    1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...

  5. 查找两个已经排好序的数组的第k大的元素

    http://www.cnblogs.com/buptLizer/archive/2012/03/31/2427579.html 给出两个排好序的数组 ,不妨设为a,b都按升序排列,及k的值,求出第k ...

  6. Java黑皮书课后题第7章:**7.19(是否排好序了?)编写以下方法,如果参数中的list数组已经排好序了则返回true。编写一个测试程序,提示用户输入一个列表,显示该列表是否已经排好序

    7.19(是否排好序了?)编写以下方法,如果参数中的list数组已经排好序了则返回true.编写一个测试程序,提示用户输入一个列表,显示该列表是否已经排好序 题目 题目描述 破题 代码 题目 题目描述 ...

  7. C语言学习之有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

    有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 #include <stdio.h> void main(){int a[11]={25,32,65,74,84,9 ...

  8. 合并两个已经排好序的不等长的数组

    给两个已经排好序的数组.这两个数组的长度可能不相等.怎样将他们合并? package airth;public class TestMergeArray {/*** 功能:* 作者: jiangfuq ...

  9. 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...

    题目 在行列都排好序的矩阵中找数 java代码 package com.lizhouwei;/*** @Description: 在行列都排好序的矩阵中找数* @Author: lizhouwei* ...

  10. c语言有一个已经排好的数组,C语言有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中...

    C语言有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插 入数组中 main() {inta[11]={1,4,6,9,13,16,19,28,40,100};inttemp1,temp2, ...

最新文章

  1. linux账号管理笔记
  2. ibatis实现1对多
  3. RedisTemplate中opsForValue()中的方法
  4. [JavaWeb-JavaScript]JavaScript_Function函数(方法)对象
  5. spring学习(48):自动装配中定义的bean的作用域
  6. SP2中修复IE浏览器的一些技巧
  7. 应对“反洗钱”,银丰新融反洗钱自主监测系统为机构保驾护航
  8. 轮播中小按钮的切换和高亮效果
  9. Oracle触发器5-Instead of触发器
  10. 常用验证码功能实现大全
  11. 手把手教你实现自己的预设滤镜
  12. 计算机网络原理之运输层
  13. TAS与CAS-用于锁的指令支持
  14. 湖人詹姆斯 戴维斯 拉塞尔三人合体就赢!
  15. 自然语言处理2——语言学基础
  16. stm32 中断处理级别_stm32中断优先级概述
  17. 【ANSYS命令流】加载与求解技术(五):面载荷(单元、线、面、转换)的施加
  18. pythonsplit怎么使用_如何在Python中使用Split命令?
  19. cics oracle xad_CICS安装问题及解决方式
  20. 基于matlab的电机运行分析,电机模型分析及拖动仿真:基于MATLAB的现代方法

热门文章

  1. Vue2版本 六边形 蜂窝 Demo
  2. SAP SD模块中POD功能使用方法
  3. 员工一言不合就离职怎么办?我用 Python 写了个员工流失预测模型
  4. nvidia控制面板点了没反应win7_nvidia控制面板打不开如何解决 nvidia控制面板点了没反应...
  5. 最新中文版本FLStudio21水果音乐软件更新下载
  6. FL Studio2020水果软件下载如何汉化教程及序列号激活详解
  7. 用c语言设计交通咨询系统,交通咨询系统设计课程设计.doc
  8. 国际快递查询代码,网站的online track
  9. 第43届ACM亚洲区域赛(青岛)总结
  10. Windows系统下载地址;office下载地址;visio下载地址