簡單選擇排序

還在看比較簡單的排序算法,比如這篇提到的簡單選擇排序算法。

基本的思想是,在第i次迭代中找到第i個最小的元素,然後把這個元素與原來在第i個亂序的元素交換位置。

形象的說,就是總在觀望,很少出手(而冒泡排序是總在出手,從不觀望~)

這種算法的比較if()次數是恆定的,但是Swap()的次數只有n-1次。

相比於冒泡排序,規模爲10000左右的排序只用200ms左右(冒泡大於700ms),1000規模的排序當然小於1ms。

具體的代碼如下:

public static void SimpleSelection(int[] temp)
        {
            int i, j, min;
            for (i = 0; i < temp.Length; i++)
            {
                min = i;
                for (j = i + 1; j < temp.Length; j++)
                {
                    if (temp[min] > temp[j])
                        min = j;
                }
                if (i != min)
                {
                    Swap(ref temp[i], ref temp[min]);           
                }
            }
        }

        private static void Swap(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章