C#中常用的几种排序算法
2015-03-26 09:50
323 查看
没事总结了一下平时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(); } } }
相关文章推荐
- C#几种常用的排序算法
- C#几种常用的排序算法
- 几种常用排序算法的c#实现(冒泡、选择、插入)
- 几种常用排序算法(asp.c#.c)
- C#几种常用的排序算法
- C#几种常用的排序算法:
- C#几种常用的排序算法:
- 【轻松学排序算法】眼睛直观感受几种常用排序算法
- 整理了几种常用的排序算法,留着自己看看
- [翻译]几种常用的基本排序算法
- C#中常用的几种读取XML文件的方法
- 几种排序算法的c#实现
- java中常用的几种排序算法
- C#中常用的几种读取XML文件的方法
- java几种常用的排序算法
- java中几种常用的排序算法
- 几种常用的C#排序方法简介
- C# 常用算法之-排序算法【原创独家】
- C#常用排序算法
- 【轻松学排序算法】眼睛直观感受几种常用排序算法