春节前后由于忙着公司里的项目,所以复习数据结构的学习计划被打乱了,前两天新的项目上线了,周末可以偷空继续看了,这个系列我希望一直可以坚持下去。之前很多朋友问我要电子版的书,我有给部分朋友发到邮箱去,但是由于忙,有的朋友我就没有发,请大家见谅。我本来打算直接在博客园上提供下载,但是每次上载的时候都会提示有脚本错误,不知道是为什么,这个还要麻烦DUDU看一下是什么问题。我现在已经将文件放到了一个文件共享的服务器上了,大家可以按照以下这个地址下载。
http://oyjd614.uubox.net/self.u/%E7%94%B5%E5%AD%90%E4%B9%A6/Data.Structures.and.Algorithms.pdf/
由于这本书我发现的错误较多,感觉质量不是很好,所以大家在看的时候一定要注意。好了,我们继续这个系列,今天主要是将排序算法中最简单的冒泡排序。所谓冒泡排序就是在每一次排序的过程中总有一个最大的值被移动到后面,值小的就像水泡一样浮到水面。下面我们就看一下代码,重要的地方都有注释,大家可以看注释。

 1    class SortingAlgorithms
 2    {
 3        private int[] arr;
 4        private int upper;
 5        private int numElement;
 6
 7        //初始化数组
 8        public SortingAlgorithms(int size)
 9        {
10            arr = new int[size];
11            upper = size - 1;
12            numElement = 0;
13        }
14
15        //给数组插入元素
16        public void Insert(int item)
17        {
18            arr[numElement] = item;
19            numElement++;
20        }
21
22        //打印数组元素
23        public void DisplayElement()
24        {
25            for (int i = 0; i <= upper; i++)
26            {
27                Console.WriteLine(arr[i] + " ");
28            }
29            Console.ReadLine();
30        }
31
32
33        //冒泡排序
34        public void BubbleSort()
35        {
36            int Temp;
37            //外循环是限制一次冒泡排序比较的元素个数
38            for (int Outer = upper; Outer >= 1; Outer--)
39            {
40                //一次冒泡排序比较0~ourter-1个元素的大小
41                for (int Inner = 0; Inner <= Outer-1; Inner++)
42                {
43                    //排序过程
44                    if (arr[Inner] > arr[Inner + 1])
45                    {
46                        Temp = arr[Inner];
47                        arr[Inner] = arr[Inner + 1];
48                        arr[Inner + 1] = Temp;
49                    }
50                }
51            }
52            //this.DisplayElement();
53        }
54
55    }
56
57一下是调用算法的过程:
58        static void Main(string[] args)
59        {
60            SortingAlgorithms MyArray = new SortingAlgorithms(10);
61            Random rnd = new Random(100);
62            for (int i = 0; i < 10; i++)
63            {
64                MyArray.Insert((int)(rnd.NextDouble()*100));
65            }
66            Console.WriteLine("Before Sorting:");
67            MyArray.DisplayElement();
68            //进行排序
69            MyArray.BubbleSort();
70            Console.WriteLine("After sorting");
71            //打印排序后的元素
72            MyArray.DisplayElement();
73        }

转载于:https://www.cnblogs.com/chencaixia/archive/2008/03/09/1097591.html

数据结构(C#)_排序算法(冒泡排序)相关推荐

  1. 冒泡排序法_排序算法 冒泡排序法

    冒泡排序法 基于Java语言实现 本文主要围绕冒泡排序法的标准版和优化版 冒泡排序法简介 原理:冒泡排序法就是对一组数据进行两两比较,也就是说第一个元素和第二个元素进行比较,如果第一个元素大于第二个元 ...

  2. [ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序

    手撕排序算法系列之:希尔排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算法:排序算 ...

  3. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  4. 经典排序算法 - 冒泡排序Bubble sort

    经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...

  5. 排序算法——冒泡排序(Bubble Sort)

    排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...

  6. python排序算法 ——冒泡排序(附代码)

    python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  7. 十大经典排序算法-冒泡排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  8. 数据结构_排序算法总结

    作者丨fredal https://www.jianshu.com/p/28d0f65aa6a1 所有内部排序算法的一个总结表格 简单选择排序 首先在未排序序列中找到最小(大)元素,存放到排序序列的起 ...

  9. python实现希尔排序算法_排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)...

    其实本文叫排序算法总结有点过了,只是用python实现了一遍.本文都是参照一篇csdn博客<数据结构排序算法>,里面详细介绍每种排序算法的原理,并给出了C++的实现,再次膜拜. # -*- ...

  10. [ 数据结构 -- 手撕排序算法第二篇 ] 冒泡排序

    手撕排序算法系列之:冒泡排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算法:排序算 ...

最新文章

  1. 2018QBXT刷题游记(15)
  2. [推荐]国外的Windows Mobile资源站点
  3. java中怎样避免方法被重写
  4. mybatis-plus+springboot+vue+element-ui实现分页
  5. web中ajax实现二级联动,Ajax实现城市二级联动(一)
  6. 程序员:下一次面试前你需要准备的五个基本步骤
  7. axios发送post数据后台收不到_axios 发 post 请求,后端接收不到参数的解决方案
  8. 全国各地 DNS 服务器 IP 总汇
  9. C# 用装饰模式实现蝌蚪变青蛙的过程-续
  10. 网络工具之GNS3安装及使用
  11. 如何在生产环境排查 Rust 内存占用过高问题
  12. linux网络程序编程
  13. iOS 友盟分享(微信)
  14. ftdi usb转串口驱动
  15. LU分解_SVD分解
  16. Laravel SQL查询中first, pluck与lists方法
  17. 《强化学习周刊》第55期:LB-SGD、MSP-DRL对抗鲁棒强化学习
  18. centos 虚拟机出问题 Oh no,something has gone wrong! 解决方法
  19. 活体检测Face Anti-spoofing前世今生:作者(Fisher Yu )
  20. 关于Git 和Github的学习

热门文章

  1. EMPLOYEE表的创建与查询
  2. 2021牛客多校10 F Train Wreck(搜索,优先队列)
  3. MSDOS(MBR)和GPT磁盘分区表
  4. 特效编辑器开发手记1——令人蛋疼菊紧的Cocos2d-x动态改变粒子数
  5. 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
  6. 用计算机软件绘制思维导图,一款简单好用的在线免费思维导图制作工具
  7. verilog实现设计3*8译码器
  8. SOCK_STREAM (TCP)、SOCK_DGRAM (UDP)、SOCK_RAW
  9. ES集群报错:master_not_discovered_exception 503
  10. 深度学习在摄影技术中的应用与发展