依次比较相邻的两个数,将小数放在前面,大数放在后面。

第1趟:

  首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。

第2趟:

  仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。

如此下去,重复以上过程,直至最终完成排序。

由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Collections;
  5. namespace 冒泡排序算法
  6. {
  7. /// <summary>
  8. /// 作者:it小金
  9. /// 说明:冒泡排序算法
  10. /// </summary>
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. int[] array = {10,6,1,3,4,2,5,9,7,8};
  16. BubbleSort bs = new BubbleSort();
  17. bs.Maopao(array);
  18. for (int i = 0; i < array.Length; i++)
  19. {
  20. Console.Write("{0} ", array[i].ToString());
  21. }
  22. Console.ReadLine();
  23. }
  24. }
  25. public class BubbleSort
  26. {
  27. public void Maopao(int[] items)
  28. {
  29. for (int i = 0; i < items.Length; i++)
  30. {
  31. bool flag = false;//标记用,若已无数据兑换,则证明排序成功退出循环
  32. for (int j = 0; j < items.Length - 1 - i; j++)
  33. {
  34. if (items[j] > items[j + 1])
  35. {
  36. int temp = items[j];
  37. items[j] = items[j + 1];
  38. items[j + 1] = temp;
  39. flag = true;
  40. }
  41. }
  42. if (flag == false)
  43. {
  44. break;
  45. }
  46. }
  47. }
  48. }
 快速排序算法
using System;
 2
 3public class Sort
 4{
 5    public class Quick_Sort
 6    {
 7        private static int QuickSort_Once(int[] _pnArray, int _pnLow, int _pnHigh)
 8        {
 9            int nPivot = _pnArray[_pnLow];      //将首元素作为枢轴
10            int i = _pnLow, j = _pnHigh;
11
12            while (i < j)
13            { 
14                //从右到左,寻找首个小于nPivot的元素
15                while (_pnArray[j] >= nPivot && i<j) j--;
16                //执行到此,j已指向从右端起首个小于nPivot的元素
17                //执行替换
18                _pnArray[i] = _pnArray[j];
19                //从左到右,寻找首个大于nPivot的元素
20                while (_pnArray[i] <= nPivot && i<j) i++;
21                //执行到此,i已指向从左端起首个大于nPivot的元素
22                //执行替换
23                _pnArray[j] = _pnArray[i];
24            }
25
26            //推出while循环,执行至此,必定是i=j的情况
27            //i(或j)指向的即是枢轴的位置,定位该趟排序的枢轴并将该位置返回
28            _pnArray[i] = nPivot;
29            return i;
30        }
31
32        private static void QuickSort(int[] _pnArray, int _pnLow, int _pnHigh)
33        {
34            if (_pnLow >= _pnHigh) return;
35
36            int _nPivotIndex = QuickSort_Once(_pnArray, _pnLow, _pnHigh);
37            //对枢轴的左端进行排序
38            QuickSort(_pnArray, _pnLow, _nPivotIndex-1);
39            //对枢轴的右端进行排序
40            QuickSort(_pnArray, _nPivotIndex + 1,_pnHigh);
41        }
42
43        public static void Main()
44        {
45            Console.WriteLine("请输入待排序数列(以\",\"分割):");
46            string _s = Console.ReadLine();
47            string[] _sArray = _s.Split(",".ToCharArray());
48            int _nLength = _sArray.Length;
49            int[] _nArray = new int[_nLength];
50            for (int i = 0; i < _nLength; i++)
51            {
52                _nArray[i] = Convert.ToInt32(_sArray[i]);
53            }
54            QuickSort(_nArray, 0, _nLength-1);
55            Console.WriteLine("排序后的数列为:");
56            foreach (int _n in _nArray)
57            {
58                Console.WriteLine(_n.ToString());
59            }
60        }
61    }
62}
63

c#冒泡排序算法和快速排序算法的更多相关文章

  1. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  2. 【排序算法】快速排序算法 Java实现

    快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...

  3. c++ 图解快速排序算法

    第一.算法描述 快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法, 快速排序算法是采用分治思想的算法,算法分三个步骤 从数组中抽出一个元素作 ...

  4. Java实现 蓝桥杯 算法提高 快速排序

    试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a ...

  5. PHP描述冒泡排序和快速排序算法

    使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...

  6. c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法

    本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...

  7. Python之排序算法:快速排序与冒泡排序

    Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...

  8. 【前端也要学点算法】快速排序的JavaScript实现

    作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...

  9. Java常见排序算法之快速排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

随机推荐

  1. js数组与字符串相互转换

    一.数组转字符串(将数组元素用某个字符连接成字符串) var a, b;a = new Array(0,1,2,3,4);b = a.join("-"); 二.字符串转数组(将字符 ...

  2. CentOS7卸载OpenJDK,并安装Oracle官方JDK

    一.准备工具 yum源挂载已就绪:CentOS7本地yum源挂载. jdk-8u201-linux-x64.tar.gz,JDK安装包: 注意:在Linux配置JDK版本要求_jdk1.8+; 二.卸 ...

  3. 用单例模式解决临界区(CRITICAL_SECTION)的使用问题

    一.前言 最近,在项目中涉及到多线程访问临界资源的问题.为了保护临界资源,可以是使用互斥量或者是使用临界区.由于,我不需要在多进程中同步,又为了效率的考量,所以选择了使用临界区的方式.但是,在使用临界 ...

  4. cf1064D. Labyrinth(01BFS)

    题意 题目链接 给出一个\(n \times m\)的网格,给出起始点,要求向左走不超过\(L\)步,向右走不超过\(R\)步,求出能遍历到哪些点 Sol 一个很直观的想法,BFS的时候状态里记录下还 ...

  5. SENNA

    SENNA is a software distributed under a non-commercial license, which outputs a host of Natural Lang ...

  6. JSP数据库综合练习

    一.问题概述         实现了数据库的增删改查和分页显示.         分页显示:mysql String cmd = "select * from t_user limit &q ...

  7. ASP.NET MVC4 with MySQL: Configuration Error (MySql.Web.v20)

    今天在浏览ASP.NET项目时,提示如下错误: Could not load file or assembly ‘MySql.Web.v20, Version=6.9.4.0, Culture=neu ...

  8. jQuery Mobile 移动 web 应用程序框架

    在这里我们主要讲一下如何引用jQuery Mobile(引用了jQuery Mobile,你就能引用jQuery Mobile里已经封装好的代码,让开发更加快捷简单) 从 CDN 引用 jQuery ...

  9. PHP程序员应当如何保持与时俱进?

    记得之前在某个论坛上看到别人说php程序员土,作为一名php程序员内心当然是不乐意的.不过别人这么说也不是完全没有道理,其实他说php程序员土应该指的就是php程序员不懂得与时俱进. 当然,这也不全是 ...

  10. day3 函数、递归、及内置函数

    请查看我的云笔记链接: http://note.youdao.com/noteshare?id=7d5aa803981ae4375a1f648f48e7ade3&sub=5DFD553A6C5 ...