排序之----插入排序(C#實現)


算法步驟:(從小到大)

1:將第一個元素與第二個元素比較大小,如果第一個元素小於等於第二個元素,不做處理,繼續比較第二個元素和第三個元素。

如果第三個元素小於第二個元素,保存要移動的元素(第三個元素),將第二個元素后移一位,在比較第一個元素與第三個元素,看第一個元素是否需要移動,一直循環,找到第一個不需要移動的元素或者第0個元素,將前面保存的元素插入到該位置。

class Program
    {
        static void Main(string[] args)
        {
            var numbers = new int[]{5,5,6,1,4,7,2,9};
            var result=InsortSort(numbers);
        }

        public static int[] InsortSort(int [] numbers)
        {
            int temp = 0;
            for (int i = 0; i < numbers.Length - 1; i++)
            {
               if(numbers[i]<=numbers[i+1])
                   continue;
                temp = numbers[i + 1];//temp保存要向前移動的數字,防止數字被覆蓋掉
                for (int j = i; j >= 0; j--)//numbers從第i個元素到第0個元素為可能要向后移動的元素
                {
                    if (temp <= numbers[j])//numbers[j]需要向后移動一個位置
                        numbers[j + 1] = numbers[j];//numbers[j+1]已經移動過,或者保存在temp中了,所以不會丟失數據
                    else
                    {
                        numbers[j +1] = temp;//j+1是要插入的位置
                        break;
                    }
                    if (j == 0)//值最小的情況
                        numbers[0] = temp;
                }
            }
            return numbers;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM