【讀書筆記】《我的第一本算法書》

《我的第一本算法書》
[日]石田保輝 宮崎修一/著
張貝/譯

		/// <summary>
		/// 冒泡排序算法  O(n^2)
		/// 重複“從序列右邊開始比較相鄰兩個數字的大小,在根據結果交換兩個數字的位置”這一操作的算法
		/// </summary>
		/// <param name="arr"></param>
		private void BubbleSort(int[] arr) {
			int len = arr.Length, left = 0, right = 0, tmp = 0;
			for(int i = 0; i < len; i++) {
				for (int j = 0; j < len - 1; j++) {
					left = len - 2 - j;
					right = len - 1 - j;
					if (arr[left] > arr[right]) {
						tmp = arr[left];
						arr[left] = arr[right];
						arr[right] = tmp;
					}
				}
			}
		}

		/// <summary>
		/// 選擇排序 O(n^2)
		/// 重複"從待排序的數據中尋找最小值,將其與序列最左邊的數字進行交換"這一操作的算法
		/// </summary>
		/// <param name="arr"></param>
		private void SelectionSort(int[] arr) {
			int len = arr.Length, index = 0, tmp = 0, min = 0;
			for(int i = 0; i < len-1; i++) {
				min = arr[i];
				index = i;
				for(int j = i+1; j < len; j++) {
					if(min > arr[j]) {
						min = arr[j];
						index = j;
					}
				}
				tmp = arr[i];
				arr[i] = arr[index];
				arr[index] = tmp;
			}
		}

		/// <summary>
		/// 插入排序
		/// 從右側的未排序區域取出一個數據插入到左側已排序區域合適的位置
		/// </summary>
		/// <param name="arr"></param>
		private void InsertionSort(int[] arr) {
			int len = arr.Length, tmp = 0;
			for(int i = 0; i < len; i++) {
				for(int j = 0; j < i; j++) {
					if (arr[i] < arr[j]) {
						tmp = arr[i];
						arr[i] = arr[j];
						arr[j] = tmp;
					}
				}
			}
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章