算法——选择排序法

每次最外层循环进来,默认下表为i的元素为最小或者最大元素。记录min = i。然后依次和剩下的元素比较,如果有比它大或者小的元素,记录下来索引赋值给min。最后当每i轮循环完毕之后,判断min是否等于i。如果等於则说明i没有变,就是我们默认的最初的值,如果变了,说明最大值或者最小值发生了变化,则应该交换数据。这里要交换的是Array[i] 和Array[min]或者Array[max].

public static int[] SelectSort(int[] Array)
        {
            for (int i = 0; i < Array.Length - 1; i++)
            {
                //每次循环进来 默认下表为i的元素为最小或者最大元素
                int min = i;
                for (int j = i+1; j < Array.Length; j++)
                {
                    if (Array[min] < Array[j])
                    {
                        min = j;
                    }
                }
                if (min!=i)
                {
                    int temp;
                    //Array[i]是第几轮默认的最小的数。如果min!=i说明 Array[i]不是最小的数 因此 Array[i]要和Array[min]交换 保证在当前轮Array[i]为最小
                    temp = Array[i];
                    Array[i] = Array[min];
                    Array[min] = temp;
                }

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