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 ...
随机推荐
- bootstrap dialog对话框,完成操作提示框
1. 依赖文件: bootstrap.js bootstrap-dialog.js bootstrap.css bootstrap-dialog.css 2.代码 BootstrapDialog.co ...
- artDialog组件应用学习(四)
一.在对话框自定义操作按钮 预览: html调用代码: var btnArray = [ { value: '同意', callback: function () { this.content('你同 ...
- 再写一篇ubuntu服务器的环境配置文
三年前写过一篇,但是环境和三年前比已经发生了比较大的变化,于是重新写一篇,自己以后再次配置也比较方便.我个人而言并没有觉得centos比ubuntu好用多少,所以继续选用ubuntu. 一.硬盘分区 ...
- [LeetCode]29. Divide Two Integers两数相除
Given two integers dividend and divisor, divide two integers without using multiplication, division ...
- 新手的grid布局
html部分 <!DOCTYPE html><html><head><meta charset="utf-8"><link r ...
- 基于Ajax与用户认证系统的登录验证
一.登录页面 from django.contrib import admin from django.urls import path from blog import views urlpatte ...
- 【转载】Navicat Premium 12安装与激活
原文地址 https://www.jianshu.com/p/5f693b4c9468#comment-20147185感谢作者的无私奉献,无意侵权,如需删除请联系我!所提供的激活文件理论支持Navi ...
- 移动Web布局
移动Web开发之移动页面布局 前言 本文针对手机设备设计的页面,并非兼容全设备的响应式布局,常见的MobileWeb页面如H5页面.手机页面.WAP页.webview页面等等.在不同尺寸的手机设备上, ...
- C#工具类之数据库连接
一.SQL Server /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类, /// 不允许实例化,在应用时直接调用即可 /// </summary&g ...
- js数组的sort排序的原理和应用
1.js sort()方法的应用: 首先:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字符串( ...