public class Sorter
{
/// <summary>
/// 冒泡排序法1
/// </summary>
/// <param name="list"></param>
public static void BubbleSort(int[] list)
{
for (int i = 0; i < list.Length; i++)
{
for (int j = i; j < list.Length; j++)
{
if (list[i] < list[j])
{
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
/// <summary>
/// 插入排序法
/// </summary>
/// <param name="list"></param>
public static void InsertionSort(int[] list)
{
for (int i = 1; i < list.Length; i++)
{
int t = list[i];
int j = i;
while ((j > 0) && (list[j - 1] > t))
{
list[j] = list[j - 1];
--j;
}
list[j] = t;
}
}
<summary>
/// 选择排序法
/// </summary>
/// <param name="list"></param>
public static void SelectionSort(int[] list)
{
int min;
for (int i = 0; i < list.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[j] < list[min])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
<summary>
/// 希尔排序法
/// </summary>
/// <param name="list"></param>
public static void ShellSort(int[] list)
{
int inc;
for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; inc /= 3)
{
for (int i = inc + 1; i <= list.Length; i += inc)
{
int t = list[i - 1];
int j = i;
while ((j > inc) && (list[j - inc - 1] > t))
{
list[j - 1] = list[j - inc - 1];
j -= inc;
}
list[j - 1] = t;
}
}
}
private static void Swap(ref int l, ref int r)
{
int s;
s = l;
l = r;
r = s;
}
/// 快速排序法
/// </summary>
/// <param name="list"></param>
/// <param name="low"></param>
/// <param name="high"></param>
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);
}
--------------------------------------------------------------------------------
C#中排序用自带的 Array.Sort() 即可实现,上面只是一些算法的实现;
Array.Sort还可自定义排序所使用的比较方法;
如:
A1,A2,A10
用Array.Sort(arr)排序后变为:
A1,A10,A2
-------------
如果你要排序后的顺序为:
A1,A2,A10
则要自定义一个 Comparer ,如:
public class CustomComparer:System.Collections.IComparer
{
public int Compare(object x, object y){
string s1 = (string)x;
string s2 = (string)y;
if (s1.Length > s2.Length) return 1;
if (s1.Length < s2.Length) return -1;
for (int i = 0; i < s1.Length; i++) {
if (s1[i] > s2[i]) return 1;
if (s1[i] < s2[i]) return -1;
}
return 0;
}
}
然后这样调用:
string[] str = new string[]{"A1","A2","A10"};
Array.Sort(str, new CustomComparer());
for (int i = 0; i < str.Length; i++)
Console.WriteLine(str[i]);
就可以输出:A1,A2,A10