c#冒泡排序算法和快速排序算法
依次比较相邻的两个数,将小数放在前面,大数放在后面。
第1趟:
首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。
第2趟:
仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。
如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Collections;
- namespace 冒泡排序算法
- {
- /// <summary>
- /// 作者:it小金
- /// 说明:冒泡排序算法
- /// </summary>
- class Program
- {
- static void Main(string[] args)
- {
- int[] array = {10,6,1,3,4,2,5,9,7,8};
- BubbleSort bs = new BubbleSort();
- bs.Maopao(array);
- for (int i = 0; i < array.Length; i++)
- {
- Console.Write("{0} ", array[i].ToString());
- }
- Console.ReadLine();
- }
- }
- public class BubbleSort
- {
- public void Maopao(int[] items)
- {
- for (int i = 0; i < items.Length; i++)
- {
- bool flag = false;//标记用,若已无数据兑换,则证明排序成功退出循环
- for (int j = 0; j < items.Length - 1 - i; j++)
- {
- if (items[j] > items[j + 1])
- {
- int temp = items[j];
- items[j] = items[j + 1];
- items[j + 1] = temp;
- flag = true;
- }
- }
- if (flag == false)
- {
- break;
- }
- }
- }
- }
2

3
public class Sort4
{5
public class Quick_Sort6
{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#冒泡排序算法和快速排序算法的更多相关文章
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- 【排序算法】快速排序算法 Java实现
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...
- c++ 图解快速排序算法
第一.算法描述 快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法, 快速排序算法是采用分治思想的算法,算法分三个步骤 从数组中抽出一个元素作 ...
- Java实现 蓝桥杯 算法提高 快速排序
试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法
本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...
- Python之排序算法:快速排序与冒泡排序
Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...
- 【前端也要学点算法】快速排序的JavaScript实现
作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...
- Java常见排序算法之快速排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
随机推荐
- Java的API及Object
API: Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 源文件使用方法: Object类概述: O ...
- 关于 C# 中接口的一些小结
< 关于 C# 中“接口”的一些小结 > 对于 C# 这样的不支持多重继承的语言,很好的体现的层次性,但是有些时候多重继承的确有一些用武之地. 比如,在 Stream 类 . 图形设备 ...
- 关于 “VMware Workstation 不可恢复错误- (vcpu-0)”
重装系统后第一次在 VMware Workstation 上创建虚拟机,结果出现了 VMware Workstation 不可恢复错误: (vcpu-0) 错误. 于是我们遵循它给出的提示,查看一下日 ...
- 彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误
利用adb shell进入系统,进入/data/app或者/data/data,删除跟你安装的apk同样的包名: 按Ctrl+C退出系统,利用adb pull /data/system/package ...
- Python学习系列----第六章 数据结构
本章主要讲的是python中重要的四种数据结构,分别是列表.元组.字典和集合. 6.1 列表 list 是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目应该包括在方括 ...
- show_sql和format_sql
<property name="show_sql">true</property> <property name="hibernate.fo ...
- Android应用开发基础之二:数据存储和界面展现(二)
常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRightOf="@id/tv1" 设置在指 ...
- 修改mysql编码方式
第一种: 通过mysql命令行修改: 1)首先查看数据库字符编码,命令为: show variables like’collation_%’; show variables like’char ...
- Mysql Order By 注入总结
前言 最近在做一些漏洞盒子后台项目的总结,在盒子多期众测项目中,发现注入类的漏洞占比较大.其中Order By注入型的漏洞也占挺大一部分比例,这类漏洞也是白帽子乐意提交的类型(奖金高.被过滤概率小). ...
- laravel 接入蚂蚁金服SDK(以支付宝APP支付为例)开发步骤
一.创建应用及配置 首先需要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),并且配置应用,主要是签约应用,这个需要审核,一般2-5 ...