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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

查找與排序03,選擇排序

2019-11-17 03:00:29
字體:
供稿:網(wǎng)友

查找與排序03,選擇排序

選擇排序是一種低效的排序算法,大致過程是:遍歷數(shù)組的每一個元素,先假設(shè)0號位置上的元素是最小的,并把0號索引賦值給一個表示最小元素索引的變量,比如說是smallest,再遍歷0號位置以后的元素,一旦發(fā)現(xiàn)有比0號位置元素更小的元素,就把該元素的索引賦值給smallest,繼續(xù)遍歷,最終把0號位置以后最小元素的索引賦值給了smallest變量,再把0號位置和smallest位置上的元素互換,這樣,在0號位置上放上了最小元素。接著,在1號位置放上倒數(shù)第二小的元素,在2號位置放上倒數(shù)第三小的元素......以此類推,最終得到一個升序排列的數(shù)組。由于是依次循環(huán)遍歷數(shù)組元素,個人更愿意把選擇排序理解成線性排序。

自定義一個類,里面維護(hù)著一個int[]類型數(shù)組,通過構(gòu)造函數(shù)定義數(shù)組長度并初始化,并提供了打印和選擇排序的相關(guān)方法。

   public class MyArray
    {
        PRivate static int[] arr;
        private static Random r = new Random();
        public MyArray(int size)
        {
            arr = new int[size];
            for (int i = 0; i < size; i++)
            {
                arr[i] = r.Next(1, 100);
            }
        }
        //選擇排序算法
        public void Sort()
        {
            int smallest; //最小元素的索引 
            //最后一個索引位置不需要遍歷,因為在代碼段的內(nèi)部循環(huán)中包含了對最后一個索引位置的處理
            for (int i = 0; i < arr.Length - 1; i++)
            {
                //把當(dāng)前遍歷的元素的索引賦值給smallest,即假設(shè)當(dāng)前遍歷的數(shù)組元素為最小元素
                smallest = i;
                //遍歷當(dāng)前遍歷元素后面的所有元素
                //獲取最小元素的索引
                for (int index = i + 1; index < arr.Length; index++)
                {
                    if (arr[index] < arr[smallest])
                    {
                        smallest = index;
                    }
                }
                //把當(dāng)前遍歷元素和最小元素交換位置
                Swap(i, smallest);
                //每次排完序打印
                Print();
            }
        }
        //交換2個位置上的元素

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南昌市| 南城县| 定日县| 河北区| 阳东县| 漠河县| 剑河县| 清苑县| 罗平县| 荆门市| 永州市| 阳朔县| 凤凰县| 德安县| 普陀区| 沁源县| 绥德县| 翁源县| 永吉县| 临潭县| 澎湖县| 玉环县| 安塞县| 安徽省| 台山市| 称多县| 金寨县| 恩平市| 汨罗市| 咸阳市| 甘泉县| 永兴县| 梁山县| 宣城市| 综艺| 乐至县| 靖江市| 锦屏县| 依兰县| 宜昌市| 隆子县|