冒泡排序:
static void Main(string[] args) { /* * 冒泡排序 * 输入: 9,2,6,4,67,23,1,4,30 * 输出:1,2,4,4,6,9,23,30,67 * */ //升序 int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 }; for(int i = 0; i < array.Length - 1; i++) { for(int j = 0; j < array.Length - i - 1; j++) { if(array[j] > array[j + 1]) { int temp = array[j + 1]; array[j + 1] = array[j]; array[j] = temp; } } } //输出 Console.Write("Ascending sorted array is: "); for(int i = 0; i < array.Length; i++) { Console.Write("{0},",array[i]); } }
插入排序:
static void Main(string[] args) { /* * 插入排序 * 输入: 9,2,6,4,67,23,1,4,30 * 输出:1,2,4,4,6,9,23,30,67 * */ //升序 int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 }; for(int i = 1; i < array.Length; i++) { int key = array[i]; int j = i - 1; while(j >= 0 && key < array[j]) { array[j + 1] = array[j]; j--; } array[j + 1] = key; } //输出 Console.Write("Ascending sorted array is: "); for(int i = 0; i < array.Length; i++) { Console.Write("{0},",array[i]); } }
快速排序:
static Int64 steps = 0; static void Main(string[] args) { /* * 快速排序 * 输入: 9,2,6,4,67,23,1,4,30 * 输出:1,2,4,4,6,9,23,30,67 * */ //升序 int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 }; FastSorting(array, 0, array.Length-1); //输出 Console.Write("Ascending sorted array is: "); for (int i = 0; i < array.Length; i++) { Console.Write("{0},", array[i]); } Console.Write(" Total steps is:{0} \r\n", steps); } static void FastSorting(int[] array, int start, int end) { if(start < end) { int mid = start + (end - start) / 2; for(int i = mid + 1; i <= end; i++) { steps++; if(array[mid] >= array[i]) { int temp = array[mid]; array[mid] = array[i]; array[i] = array[mid + 1]; array[mid + 1] = temp; mid++; } } for(int i = mid - 1; i >= start; i--) { steps++; if(array[mid] <= array[i]) { int temp = array[mid]; array[mid] = array[i]; array[i] = array[mid -1]; array[mid -1] = temp; mid--; } } FastSorting(array, mid + 1, end); FastSorting(array, start, mid - 1); } }