C#中常用的几种排序算法
来源:互联网 发布:男士控油保湿知乎 编辑:程序博客网 时间:2024/06/05 14:37
没事总结了一下平时C#中比较常见的排序算法,其中有稳定的 也有不稳定的,使用时自行斟酌,下面是具体脚本:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication2{ class Program { int[] data = { 5, 6, 9, 8, 7, 2, 3, 1, 4, 0 }; int temp; //选择排序 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置 (不稳定) void Select() { for (int i = 0; i < data.Length - 1; i++) { for (int j = i + 1; j < data.Length; j++) { if (data[i] > data[j]) { temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } /* --------------------------------------------------------------------------------------------------------------------------------*/ //冒泡排序 比较相邻两数,每次最后一个元素就是最小或者最大,重复以上操作,出了最后一位,没执行一次 次数-1 (稳定) void Maopao() { for (int i = 0; i < data.Length - 1; i++) { for (int j = 0; j < data.Length - 1 - i; j++) { if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } } /* --------------------------------------------------------------------------------------------------------------------------------*/ //插入排序 每次循环都是将该数与之前的所有数作比较,找到合适的位置插入(替换) (稳定) void Insert() { for (int i = 1; i < data.Length; i++) { for (int j = i; j > 0; j--) { if (data[j - 1] > data[j]) { temp = data[j - 1]; data[j - 1] = data[j]; data[j] = temp; } } } } /* --------------------------------------------------------------------------------------------------------------------------------*/ //快速排序 (不稳定) 意在将一组数据分为两组,其中一组的所有数据都大于或者小于另外一组数据。设定第一个数为基数,从右往左找比它小的数,从左往右找比它大的数,注意顺序,一定是先从右往左再从左往右,找到之后将两者交互,等到二者相遇时,将相遇的点设为基数点,将原先设定的基数点的数值赋值给相遇点。 void Quick_Sort(int left, int right) { int i, j, temp,t; if (left > right) return; //设置基数 设置最左边的数位基数 temp = data[left]; i = left; j = right; //执行的条件,当i=j时回归基数 while (i != j) { //注意顺序 一定是先右往左找到比基数小的数,再从左往右找到比基数大的数,然后交换两个数的位置 while (data[j] >= temp && i < j) j--; while (data[i] <= temp && i < j) i++; if (i < j) { t = data[i]; data[i] = data[j]; data[j] = t; } } //i=j 回归基数 data[left] = data[i]; data[i] = temp; //执行a[i](基数)前面一段的排序 Quick_Sort( left, i - 1); //执行a[i](基数)后面一段的排序 Quick_Sort( i + 1, right); } static void Main(string[] args) { Program p = new Program(); p.Quick_Sort(0,p.data.Length-1); //输出排序后的数 for (int i = 0; i < p.data.Length; i++) { Console.Write(p.data[i] + " "); } Console.ReadKey(); } }}
0 0
- C#中常用的几种排序算法
- C#几种常用的排序算法
- C#几种常用的排序算法
- C#几种常用的排序算法:
- C#几种常用的排序算法
- 几中常用的排序算法实现
- java中常用的几种排序算法
- java中常用的几种排序算法
- java中数组常用的几种排序算法
- 几种常用的基本排序算法
- 几种常用的排序算法
- 几种常用的排序算法
- 几种常用的排序算法
- 几种常用的排序算法
- 几种常用的排序算法
- 几种常用的排序算法
- 常用的几种排序算法
- 几种常用的排序算法
- 微信在校生实习面试小记(iOS端)
- Perl 判断字符串为空
- 黑马程序员 -- C语言 结构体 预编译
- 我在Pointers on C 的错误点——1
- AjaxPage类使用说明
- C#中常用的几种排序算法
- 带下划线的变量名ios学习笔记
- 【凯子哥带你夯实应用层】读 Develop API Guides 有感(一)
- ios 后台运行
- Linux 网桥模式下使用netfilter
- UIButton的titleEdgeInsets和imageEdgeInsets属性
- 用两种while循环求2的n次方,n是传入的值。
- 重拾Android 之界面控件和布局方式
- android动效开篇