您的位置:首页 > 编程语言 > C#

C# 数组排序方式总结

2014-01-09 18:16 369 查看
在C#中常用的数组排序的方法有:选择排序法、冒泡排序法、插入排序法和希尔排序法等。

一、选择排序法



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Test

{

class Program

{

static void Main(string[] args)

{

// C#选择排序法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: