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

c#实现所有经典排序算法

2008-06-18 23:09 706 查看

c#实现所有经典排序算法

//选择排序
class selectionsorter
{
private int min;
public void sort(int[] arr)
{
for (int i = 0; i < arr.length - 1; ++i)
{
min = i;
for (int j = i + 1; j < arr.length; ++j)
{
if (arr[j] < arr[min])
min = j;
}
int t = arr[min];
arr[min] = arr[i];
arr[i] = t;
}
}
static void main(string[] args)
{
int[] array = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
selectionsorter s = new selectionsorter();
s.sort(array);
foreach (int m in array)
console.writeline("{0}", m);
}
}
//冒泡排序
class ebullitionsorter
{
public void sort(int[] arr)
{
int i, j, temp;
bool done = false;
j = 1;
while ((j < arr.length) && (!done))//判断长度
{
done = true;
for (i = 0; i < arr.length - j; i++)
{
if (arr[i] > arr[i + 1])
{
done = false;
temp = arr[i];
arr[i] = arr[i + 1];//交换数据
arr[i + 1] = temp;
}
}
j++;
}
}

static void main(string[] args)
{
int[] array = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
ebullitionsorter e = new ebullitionsorter ();
e.sort(array);
foreach (int m in array)
console.writeline("{0}", m);

}
}
//快速排序
class quicksorter
{
private void swap(ref int l, ref int r)
{
int temp;
temp = l;
l = r;
r = temp;
}
public 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);
}

static void main(string[] args)
{
int[] iarrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
quicksorter q = new quicksorter();
q.sort(iarrary, 0, 13);
for (int m = 0; m <= 13; m++)
console.writeline("{0}", iarrary[m]);
}
}
//插入排序
public class insertionsorter
{
public void sort(int[] arr)
{
for (int i = 1; i < arr.length; i++)
{
int t = arr[i];
int j = i;
while ((j > 0) && (arr[j - 1] > t))
{
arr[j] = arr[j - 1];//交换顺序
--j;
}
arr[j] = t;
}
}
static void main(string[] args)
{
int[] array = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
insertionsorter i = new insertionsorter();
i.sort(array);
foreach (int m in array)
console.writeline("{0}", m);
}
}
//希尔排序
public class shellsorter
{
public void sort(int[] arr)
{
int inc;
for (inc = 1; inc <= arr.length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; inc /= 3)
{
for (int i = inc + 1; i <= arr.length; i += inc)
{
int t = arr[i - 1];
int j = i;
while ((j > inc) && (arr[j - inc - 1] > t))
{
arr[j - 1] = arr[j - inc - 1];//交换数据
j -= inc;
}
arr[j - 1] = t;
}
}
}

static void main(string[] args)
{
int[] array = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
shellsorter s = new shellsorter();
s.sort(array);
foreach (int m in array)
console.writeline("{0}", m);

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