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 ...
随机推荐
- webview中播放视屏,返回或者退出后,仍然会有声音。
解决办法: protected void onPause() { super.onPause(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODE ...
- Portals
Portals Portals 提供了一种很好的将子节点渲染到父组件以外的 DOM 节点的方式. const appRoot = document.getElementById('app-root') ...
- JavaScript简易动画
<p id="s">fly</p> <script> function move(){ var id=document.getElementBy ...
- CSS样式编写案例
1.制作如图三角形效果: 步骤一:将右侧盒子设置为相对定位 步骤二:在右侧盒子里面新建个子盒子,设置宽高相等,为正方形,绝对定位 步骤三:将绝对定位的盒子用CSS3旋转属性旋转 2.制定如图的序列号 ...
- SQL Server中的高可用性----复制
在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述.但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性.本文着重对 ...
- Service Broker完成实例之间的会话详细解读
首先了解service broker是什么东西: Service Broker 是数据库引擎的组成部分,因此管理这些应用程序就成为数据库日常管理的一部分. Service Broker 为 SQL S ...
- ORACLE_LPAD_FUNCTION
Oracle / PLSQL: LPAD Function This Oracle tutorial explains how to use the Oracle/PLSQL LPAD functio ...
- python入门16 递归函数 高阶函数
递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...
- 用PHP向数据库中实现简单的增删改查(纯代码)
<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) ...
- iOS 代码混淆--pch实现
之前实现代码的混淆一般是使用sh脚本,不过也是需要把一写需要混淆的方法写到一个文件中(除非是使用特定的命名规范统一混淆), 现在发现,实现代码的混淆pch 文件就可以轻松完成! 1,在新建的工程中 创 ...