国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

排序算法小結

2019-11-17 03:21:20
字體:
來源:轉載
供稿:網友

排序算法小結

一、選擇排序:選擇排序是一種最簡單直觀的排序算法。首先在未排序數列中找到最大(小)的元素,存放到排序數列的起始(結束)位置,再從剩余的排序元素中繼續尋找最大(小)的元素,然后放在已排序元素的末尾(前面)。以此類推,直到所有元素排序完成。代碼如下:

        /// <summary>        /// 選擇排序(從小到大)        /// </summary>        /// <param name="list">待排序數組</param>        public static int[] SelectionSort(int[] list)        {            int min; //存儲最小元素            int minIndex; //存儲最小元素的索引            int temp;            int i, j;            int len = list.Length; //數組長度            for (i = 0; i < len - 1; i++)            {                min = list[i];                minIndex = i;                for (j = i; j < len; j++)                {                    if (list[j] < min)                    {                        min = list[j];                        minIndex = j;                    }                }                if (minIndex > i) //交換元素,把最小的元素放在最前面                {                    temp = list[i];                    list[i] = min;                    list[minIndex] = temp;                }            }            return list;      }

二、冒泡排序:冒泡排序是一種交換排序。它重復的走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤則把它們交換過來。走訪數列的工作是重復進行直到沒有元素交換,也就說明已完成排序。代碼如下:

        /// <summary>        /// 冒泡排序(從小到大)        /// </summary>        /// <param name="list">待排序數組</param>        /// <returns></returns>        public static int[] BubbleSort(int[] list)        {            int i, j;            int temp;            int len = list.Length;            int exchange = len - 1;  //記錄發生交換的位置            while (true)            {                int bound = exchange;                exchange = 0;  //假定本趟比較沒有元素交換                for (i = 0; i < bound; i++)                {                    j = i + 1;                    if (list[i] > list[j]) //交換元素,值大的元素后移                    {                        temp = list[i];                        list[i] = list[j];                        list[j] = temp;                        exchange = i;                    }                }                if (exchange == 0)  //本趟比較沒有發生元素交換則說明已經排序好                {                    break;                }            }            return list;       }

三、插入排序:插入算法首先把要排序的數組分成兩部分:第一部分為未排序數據包含了這個數組的所有元素,但最后一個元素除外,而第二部分為已排序數據就只包含這一個元素。對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。代碼如下:

        /// <summary>        /// 插入排序(從小到大)        /// </summary>        /// <param name="list">待排序數組</param>        /// <returns></returns>        public static int[] InsertionSort(int[] list)        {            int i, j;            int temp;            int len = list.Length;            for (i = 1; i < len; i++)            {                j = i - 1;                temp = list[i];                while (j>=0 && list[j]>temp)                {                    list[j + 1] = list[j];                    j--;                }                list[j+1] = temp;  //被排序的數放到正確的位置            }            return list;      }

代碼下載


上一篇:c# ref與out的區別

下一篇:C# 變量交換

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五家渠市| 深圳市| 淅川县| 盐源县| 海南省| 康乐县| 会东县| 丹东市| 武威市| 图们市| 正定县| 东阳市| 越西县| 基隆市| 德庆县| 浦北县| 台湾省| 合山市| 文登市| 平阴县| 泰宁县| 河曲县| 成安县| 阳谷县| 商水县| 哈巴河县| 比如县| 西吉县| 益阳市| 武清区| 耿马| 拉孜县| 左权县| 淮北市| 峨边| 子洲县| 噶尔县| 宿迁市| 鱼台县| 朝阳市| 遵义县|