2020-09-15 手寫基本演算法

已經很晚了發表於2020-09-23

基本演算法
氣泡排序
兩兩相比,大小決定左右位置。

 public int[] BubbleSort(int[] arr)
        {
        /* 生成隨機陣列進行測試   
            int a = 0;
            Random r = new Random();
            List<int> list = new List<int>();
            for (int b = 0; b < 4;b++ )
            {
                a = r.Next(100);
                list.Add(a);
            }
            arr = list.ToArray(); 
         */
            int tmp = 0;
          for (int outer = 0; outer < arr.Length; outer++)
            {
                for (int inner = 0; inner < arr.Length-1; inner++)
                {
                    
                    if (arr[inner] > arr[inner + 1]) {
                        tmp = arr[inner];
                        arr[inner] = arr[inner + 1];
                        arr[inner + 1] = tmp;
                        
                    }
                }
            }
          return arr;
            
        }

選擇排序
宣告最值下標,初始值為每次迴圈的第一個數
迴圈找出最值:迴圈與當前最值進行比較,大/小於最值時,覆蓋下標,當最值不為初始值時,交換位置。

public int[] SelectionSort(int[] arr)
        {
            for (int outer = 0; outer < arr.Length-1; outer++)
            {
                 int minIndex = outer;
                
                 int tmp = 0;
                 for (int inner = outer + 1; inner < arr.Length; inner++)
                {
                    if (arr[inner] < arr[minIndex])
                    {
                        minIndex = inner;
                    }
                 
                }
                if (minIndex != outer)
                {
                    tmp = arr[outer];
                    arr[outer] = arr[minIndex];
                    arr[minIndex] = tmp;
                }
              
            }
                return arr;
        }

插入排序
將除首位的元素先存入tmp中,迴圈與前面的數進行比較

 public int[] InsertSort(int[] arr)
        {
            int tmp = 0;
            for (int i = 1; i < arr.Length;i++ )
            {              
                for (int j = 1; j < arr.Length; j++)
                {
                    tmp = arr[j];
                    if (arr[j] < arr[j - 1])
                    {
                        arr[j] = arr[j - 1];
                        arr[j - 1] = tmp;
                }
            }
            }
            return arr;
        }

相關文章