#实现数组的排序
C#常见四种排序方法;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BubbleSort
{
class Program
{
public static int[] e_Arr = new int[4];
static void Main(string[] args)
{
int[] s_Arr = { 4, 2, 5, 3 };
BubbleSort(s_Arr);
//InsertionSort(s_Arr);
//SelectionSort(s_Arr);
foreach (var a1 in s_Arr)
{
Console.WriteLine(a1);
}
Console.ReadLine();
}
///
///
冒泡排序法1
///
///
///
public static int[] BubbleSort(int[] s_Arr)
{
for (int i = 0; i < s_Arr.Length; i++)
{
for (int j = 0; j < s_Arr.Length; j++)
{
if (s_Arr[i] < s_Arr[j])
{
int temp = s_Arr[i]; s_Arr[i] = s_Arr[j]; s_Arr[j] = temp;
}
}
}
e_Arr = s_Arr;
return e_Arr;
}
///
///
插入排序法2
///
///
public static int[] InsertionSort(int[] s_Arr)
{
for (int i = 1; i < s_Arr.Length; i++)
{
int t = s_Arr[i];
int j = i;
while ((j > 0) && (s_Arr[j - 1] > t))
{
s_Arr[j] = s_Arr[j - 1];
--j;
}
s_Arr[j] = t;
}
e_Arr = s_Arr;
return e_Arr;
}
///
///
选择排序法3
///
///
public static int[] SelectionSort(int[] s_Arr)
{
int min;
for (int i = 0; i < s_Arr.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < s_Arr.Length; j++)
{
if (s_Arr[j] < s_Arr[min])
min = j;
}
int t = s_Arr[min];
s_Arr[min] = s_Arr[i];
s_Arr[i] = t;
}
e_Arr = s_Arr;
return e_Arr;
}
///
///
希尔排序法4
///
///
public static int[] ShellSort(int[] s_Arr)
{
int inc;
for (inc = 1; inc <= s_Arr.Length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; inc /= 3)
{
for (int i = inc + 1; i <= s_Arr.Length; i += inc)
{
int t = s_Arr[i - 1];
int j = i;
while ((j > inc) && (s_Arr[j - inc - 1] > t))
{
s_Arr[j - 1] = s_Arr[j - inc - 1];
j -= inc;
}
s_Arr[j - 1] = t;
}
}
e_Arr = s_Arr;
return e_Arr;
}
///
///
快速排序法4
///
///
///
///
public static void Sort(int[] list, int low, int high)
{
int pivot;
int l, r;
int mid;
if (high <= low)
return;
else if (high == low + 1)
{
if (list[low] > list[high])
Swap(ref list[low], ref list[high]);
return;
}
mid = (low + high) >> 1;
pivot = list[mid];
Swap(ref list[low], ref list[mid]);
l = low + 1;
r = high;
do
{
while (l <= r && list[l] < pivot)
l++;
while (list[r] >= pivot)
r--;
if (l < r)
Swap(ref list[l], ref list[r]);
} while (l < r);
list[low] = list[r];
list[r] = pivot;
if (low + 1 < r)
Sort(list, low, r - 1);
if (r + 1 < high)
Sort(list, r + 1, high);
}
private static void Swap(ref int l, ref int r)
{
int s;
s = l;
l = r;
r = s;
}
}
}