用C#實現九種經典排序算法
2010/11/8 15:26:14
1、冒泡排序
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++;
}
}
}
2、小根堆排序
/// <summary>
/// 小根堆排序
/// </summary>
/// <param name="dblArray"></param>
/// <param name="StartIndex"></param>
/// <returns></returns>
private void HeapSort(ref double[] dblArray)
{
for (int i = dblArray.Length - 1; i >= 0; i--)
{
if (2 * i + 1 < dblArray.Length)
{
int MinChildrenIndex = 2 * i + 1;
//比較左子樹和右子樹,記錄最小值的Index
if (2 * i + 2 < dblArray.Length)
{
if (dblArray[2 * i + 1] > dblArray[2 * i + 2])
MinChildrenIndex = 2 * i + 2;
}
if (dblArray[i] > dblArray[MinChildrenIndex])
{
ExchageValue(ref dblArray[i], ref dblArray[MinChildrenIndex]);
NodeSort(ref dblArray, MinChildrenIndex);
}
}
}
}
/// <summary>
/// 節點排序
/// </summary>
/// <param name="dblArray"></param>
/// <param name="StartIndex"></param>
private void NodeSort(ref double[] dblArray, int StartIndex)
{
while (2 * StartIndex + 1 < dblArray.Length)
{
int MinChildrenIndex = 2 * StartIndex + 1;
if (2 * StartIndex + 2 < dblArray.Length)
{
if (dblArray[2 * StartIndex + 1] > dblArray[2 * StartIndex + 2])
{
MinChildrenIndex = 2 * StartIndex + 2;
}
}
if (dblArray[StartIndex] > dblArray[MinChildrenIndex])
{
ExchageValue(ref dblArray[StartIndex], ref dblArray[MinChildrenIndex]);
StartIndex = MinChildrenIndex;
}
}
}
/// <summary>
/// 交換值
/// </summary>
/// <param name="A"></param>
/// <param name="B"></param>
private void ExchageValue(ref double A, ref double B)
{
double Temp = A;
A = B;
B = Temp;
}
3、插入排序
插入排序
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;
}
}
}
4、希爾排序
public class ShellSorter
{
public void Sort(int[] arr)
{
int inc;
for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; i
下一頁
返回列表
返回首頁
主站蜘蛛池模板:
亚洲午夜精品久久久久久人妖|
国产人人为我我为人|
jlzz大全高潮多水老师|
日日躁夜夜躁狠狠躁超碰97|
亚洲一区精品无码|
毛片女人毛片一级毛片毛片|
制服丝袜一区二区三区|
色老二精品视频在线观看|
国产无遮挡吃胸膜奶免费看
|
一级毛片免费不卡|
日本免费看视频|
乱中年女人伦av三区|
欧美成人一区二区三区在线视频|
毛片A级毛片免费播放|
国产伦精品一区二区|
亚洲日本va在线观看|
国产高清视频网站|
h小视频在线观看|
成人一级黄色片|
久久777国产线看观看精品卜|
日韩欧美不卡视频|
亚洲av永久无码精品水牛影视
|
jlzz大全高潮多水老师|
成人免费网站视频www|
久久一本一区二区三区|
日本高清电影免费播放|
久久精品欧美日韩精品|
桃子视频观看免费完整|
亚洲国产AV无码一区二区三区
|
国产成人A亚洲精V品无码|
bt天堂在线最新版在线|
国产精品第6页|
88av在线看|
国自产精品手机在线观看视频|
japanese国产在线观看|
好男人社区www在线官网|
一本精品中文字幕在线|
成人凹凸短视频在线观看|
中文字幕无线码免费人妻|
无码av岛国片在线播放|
久久99精品久久久久久|