<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    C#對象數(shù)組排序方法

    C#對象數(shù)組排序方法

    #實(shí)現(xiàn)數(shù)組的排序

    一個排序的類,用了幾種方式實(shí)現(xiàn)的。

    1using System;
    2
    3namespace DataStruct
    4{
    5 public class Sorter
    6 {
    7 /**//// <summary>
    8 /// 冒泡排序法1
    9 /// </summary>
    10 /// <param name="list"></param>
    11 public static void BubbleSort(int[] list)
    12 {
    13 for (int i = 0; i < list.Length; i++)
    14 {
    15 for (int j = i; j < list.Length; j++)
    16 {
    17 if (list[i] < list[j])
    18 {
    19 int temp = list[i];
    20 list[i] = list[j];
    21 list[j] = temp;
    22 }
    23 }
    24 }
    25 }
    26
    27 /**//// <summary>
    28 /// 插入排序法
    29 /// </summary>
    30 /// <param name="list"></param>
    31 public static void InsertionSort(int[] list)
    32 {
    33 for (int i = 1; i < list.Length; i++)
    34 {
    35 int t = list[i];
    36 int j = i;
    37 while ((j > 0) && (list[j - 1] > t))
    38 {
    39 list[j] = list[j - 1];
    40 --j;
    41 }
    42 list[j] = t;
    43 }
    44
    45 }
    46
    47 /**//// <summary>
    48 /// 選擇排序法
    49 /// </summary>
    50 /// <param name="list"></param>
    51 public static void SelectionSort(int[] list)
    52 {
    53 int min;
    54 for (int i = 0; i < list.Length - 1; i++)
    55 {
    56 min = i;
    57 for (int j = i + 1; j < list.Length; j++)
    58 {
    59 if (list[j] < list[min])
    60 min = j;
    61 }
    62 int t = list[min];
    63 list[min] = list[i];
    64 list[i] = t;
    65 }
    66
    67 }
    68
    69 /**//// <summary>
    70 /// 希爾排序法
    71 /// </summary>
    72 /// <param name="list"></param>
    73 public static void ShellSort(int[] list)
    74 {
    75 int inc;
    76 for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
    77 for (; inc > 0; inc /= 3)
    78 {
    79 for (int i = inc + 1; i <= list.Length; i += inc)
    80 {
    81 int t = list[i - 1];
    82 int j = i;
    83 while ((j > inc) && (list[j - inc - 1] > t))
    84 {
    85 list[j - 1] = list[j - inc - 1];
    86 j -= inc;
    87 }
    88 list[j - 1] = t;
    89 }
    90 }
    91 }
    92
    93 private static void Swap(ref int l, ref int r)
    94 {
    95 int s;
    96 s = l;
    97 l = r;
    98 r = s;
    99 }
    100
    101 /**//// <summary>
    102 /// 快速排序法
    103 /// </summary>
    104 /// <param name="list"></param>
    105 /// <param name="low"></param>
    106 /// <param name="high"></param>
    107 public static void Sort(int[] list, int low, int high)
    108 {
    109 int pivot;
    110 int l, r;
    111 int mid;
    112 if (high <= low)
    113 return;
    114 else if (high == low + 1)
    115 {
    116 if (list[low] > list[high])
    117 Swap(ref list[low], ref list[high]);
    118 return;
    119 }
    120 mid = (low + high) >> 1;
    121 pivot = list[mid];
    122 Swap(ref list[low], ref list[mid]);
    123 l = low + 1;
    124 r = high;
    125 do
    126 {
    127 while (l <= r && list[l] < pivot)
    128 l++;
    129 while (list[r] >= pivot)
    130 r--;
    131 if (l < r)
    132 Swap(ref list[l], ref list[r]);
    133 } while (l < r);
    134 list[low] = list[r];
    135 list[r] = pivot;
    136 if (low + 1 < r)
    137 Sort(list, low, r - 1);
    138 if (r + 1 < high)
    139 Sort(list, r + 1, high);
    140 }
    141 }
    142}
    143

    C#對象數(shù)組排序方法
    排序是編程中常用的法算之一,排序的方法有很多種,下面介紹一種簡單有效的排序方法,代碼如下:
    private bool isReverse = false;
    private void Sort(PersonalNotificationEntity [] list,string key)
    {
    if ( isReverse )
    {
    Array.Reverse(list);
    isReverse = false;
    }
    else
    {
    int len = list.Length;
    Type type = typeof(PersonalNotificationEntity);
    object [] keys = new object[len];
    for(int i = 0 ; i < len ; i++)
    {
    keys[i] = type.InvokeMember(key,BindingFlags.GetField ,null,list[i],null);
    }
    Array.Sort(keys,list);
    isReverse = true;
    }
    }
    這里使用了Array.Sort()和Array.Reverse()方法對數(shù)據(jù)進(jìn)行正/反排序,變量isReverse做為反排序的標(biāo)志位
    方法傳入了2個參數(shù),一個是要排序的對象數(shù)組list,一個是排序關(guān)鍵字key,即要對象的根據(jù)哪個屬性或字段來進(jìn)行排序(這個值是等于對象的屬性/字段名)
    type.InvokeMember()方法可以得到對象實(shí)例的屬性/字段值,這里使用的是字段
    在得到數(shù)組中的每一個要排序的字段值后,把這個字段值數(shù)組做為Array.Sort()方法的參數(shù)傳入,Sort方法就會將對象數(shù)按這個字段的值進(jìn)行排序。

    轉(zhuǎn)載
    分類: C#

    posted on 2012-09-07 21:21 ** 閱讀(229) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學(xué)習(xí)

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一个人免费观看www视频| 亚洲精品人成网在线播放影院| 亚洲av无码专区亚洲av不卡 | 国产免费福利体检区久久| 哒哒哒免费视频观看在线www| 亚洲精品精华液一区二区| 妞干网在线免费视频| 亚洲人xxx日本人18| 好爽…又高潮了免费毛片| 亚洲日韩精品无码专区加勒比☆| 中文字幕无码视频手机免费看 | 国色精品va在线观看免费视频| 亚洲日韩激情无码一区| a毛片视频免费观看影院| 亚洲精品无码永久在线观看你懂的| 国产成人精品免费大全| 在线精品亚洲一区二区小说| 中文字幕免费在线播放| 亚洲国产高清在线| 国产精品69白浆在线观看免费| 国产精品亚洲一区二区麻豆| 日韩免费无砖专区2020狼| 麻豆va在线精品免费播放| 精品国产人成亚洲区| 美女在线视频观看影院免费天天看| 亚洲国产综合91精品麻豆| 男女免费观看在线爽爽爽视频| 亚洲爆乳精品无码一区二区| 亚洲免费在线观看| 免费A级毛片av无码| 精品亚洲456在线播放| 亚洲精品NV久久久久久久久久| 精品四虎免费观看国产高清午夜| 亚洲第一成年网站大全亚洲| 国产高清视频在线免费观看| 国产精品一区二区三区免费| 亚洲无圣光一区二区| 少妇亚洲免费精品| 99视频精品全部免费观看| 日韩亚洲综合精品国产| 久久久亚洲精品国产|