C#数组排序方法
在C#中常用的数组排序的方法有:选择排序法、冒泡排序法、插入排序法和希尔排序法等。
一、选择排序法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// C#选择排序法-www.baike369.com
int[] array = new int[] { 2, 18, 9, 26, 3, 7, 5, 10 };
Console.Write("数组排序前的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.WriteLine();
int min;
for (int i = 0; i < array.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < array.Length; j++)
{
if (array[j] < array[min])
min = j;
}
int t = array[min];
array[min] = array[i];
array[i] = t;
}
Console.Write("数组排序后的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.ReadLine();
}
}
}
运行结果:
数组排序前的结果为:2 18 9 26 3 7 5 10
数组排序后的结果为:2 3 5 7 9 10 18 26
二、冒泡排序法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 2, 18, 9, 26, 3, 7, 5, 10 };
Console.Write("数组排序前的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.WriteLine();
for (int i = 0; i < array.Length; i++)
{
for (int j = i; j < array.Length; j++)
{
if (array[i] < array[j])
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
Console.Write("数组排序后的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.ReadLine();
}
}
}
运行结果:
数组排序前的结果为:2 18 9 26 3 7 5 10
数组排序后的结果为:26 18 10 9 7 5 3 2
三、插入排序法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 2, 18, 9, 26, 3, 7, 5, 10 };
Console.Write("数组排序前的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.WriteLine();
for (int i = 1; i < array.Length; i++)
{
int t = array[i];
int j = i;
while ((j > 0) && (array[j - 1] > t))
{
array[j] = array[j - 1];
--j;
}
array[j] = t;
}
Console.Write("数组排序后的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.ReadLine();
}
}
}
运行结果:
数组排序前的结果为:2 18 9 26 3 7 5 10
数组排序后的结果为:2 3 5 7 9 10 18 26四、希尔排序法
希尔排序是将组分段,然后进行插入排序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 2, 18, 9, 26, 3, 7, 5, 10 };
Console.Write("数组排序前的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.WriteLine();
int inc;
for (inc = 1; inc <= array.Length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; inc /= 3)
{
for (int i = inc + 1; i <= array.Length; i += inc)
{
int t = array[i - 1];
int j = i;
while ((j > inc) && (array[j - inc - 1] > t))
{
array[j - 1] = array[j - inc - 1];
j -= inc;
}
array[j - 1] = t;
}
}
Console.Write("数组排序后的结果为:");
foreach (int n in array)
{
Console.Write("{0}", n + " ");
}
Console.ReadLine();
}
}
}
运行结果:
数组排序前的结果为:2 18 9 26 3 7 5 10
数组排序后的结果为:2 3 5 7 9 10 18 26
C#数组排序方法的更多相关文章
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- 数组排序方法(join()、reverse()、sort())
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ***PHP 数组排序 +php二维数组排序方法(PHP比较器)
PHP - 一维数组的排序函数 在本节中,我们将学习如下 PHP 数组排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组 ...
- php二维数组排序方法(转自http://www.3lian.com/edu/2013/12-26/118882.html)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: 代码如下: ...
- PHP指定字段的多维数组排序方法
PHP数组排序可以用array_multisort方法实现,但是如果是多维数组,并且我们要指定数组中的某个字段进行排序,那么这就需要我们自己写方法实现了. function sortArrByFiel ...
- javascript数组(1) ——sort的工作原理及其他数组排序方法
一说到数组排序,最直观的想法就是用sort啊! 请问不用使用sort方法还可以使用什么方法进行数组排序? 比如 : 快速排序法.合并排序法.冒泡排序法.选择排序法.插入排序法.布尔排序法.交互排序. ...
- php二维数组排序方法(array_multisort usort)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...
- php二维数组排序方法(array_multisort,usort)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...
- PHP 数组排序方法总结
sort:本函数为 array 中的单元赋予新的键名.这将删除原有的键名而不仅是重新排序. rsort:本函数对数组进行逆向排序(最高到最低). 删除原有的键名而不仅是重新排序. asort:对数组进 ...
随机推荐
- BZOJ2388:旅行规划(travel)——分块凸包
题目 OIVillage 是一个风景秀美的乡村,为了更好的利用当地的旅游资源,吸引游客,推动经济发展,xkszltl 决定修建了一条铁路将当地 $n$ 个最著名的经典连接起来,让游客可以通过火车从铁路 ...
- ios 适配问题
两张图解决
- 在linux服务器下日志提取的python脚本(实现输入开始时间和结束时间打包该时间段内的文件)
1.需求:近期在提取linux服务器下的日志文件时总是需要人工去找某个时间段内的日志文件,很是枯燥乏味,于是乎,我就想着用python结合linux指令来写一个日志提取的脚本,于是就有了以下脚本文件: ...
- The new week-学习Python-数据类型
记录自学Python心得 之前有一段时间的JAVA自学,但最终以“无目标”的状态下被懒散驱散了动力,此为前提 Python的历程就不细细说道了,蛮有趣的 一般大家都是学习的CPython,速度较快(这 ...
- 062 Unique Paths 不同路径
机器人位于一个 m x n 网格的左上角, 在下图中标记为“Start” (开始).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角,在下图中标记为“Finish”(结束).问有多少条不 ...
- 《springcloud 二》SrpingCloud Zuul 微服务网关搭建
网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...
- javascript 关于hashtable
javascript 实现HashTable(哈希表) 一.javascript哈希表简介 javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascrip ...
- 【踩坑】Nginx上配置ssl证书实现https访问
昨天开始为域名挂上ssl证书,使得可以以https去访问服务器.按照网上所介绍的配置Nginx,然而一直访问不了网站. 第二天排查了一早上,发现不单要配置Nginx,阿里云上安全组要开启443端口,并 ...
- vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
vue-quill-editor是个较为轻量级富文本框,相较于ueditor,开发更编辑,更加直观,如果大家伙在需求允许的情况下,还是会比较建议使用vue-quill-editor vue-quill ...
- Git基础使用教程(仓库初始化,源码clone,源码push)
一.下载Git源码管理客户端 Git下载地址:https://git-scm.com/ 二.检查电脑是否已安装Git 1)已安装:输入git出现下图提示则代表已安装成功. 2)未安装情况下git会出现 ...