public static class SortArithmetic { /// <summary> /// 冒泡排序 /// </summary> /// <param name="data"></param> public static void BubbleSort(int[] data) { int len = data.Length; for (int i = 0; i < len; i++) { for (int j = len - 1; j > 0; j--) { if (data[j - 1] > data[j]) { int temp = data[j]; data[j] = data[j - 1]; data[j - 1] = temp; } } }//end for } /// <summary> /// 选择排序 /// </summary> /// <param name="data"></param> public static void SelectSort(int[] data) { int len = data.Length; for (int i = 0; i < len; i++) { int k=i; for (int j = i; j < len; j++) { if (data[j] < data[k]) k = j; } if (k != i) { int temp = data[k]; data[k] = data[i]; data[i] = temp; } } } /// <summary> /// 直接插入排序 /// 2, 5, 4, 8, 3, 7, 0 /// 2, 5, 4, 8, 3, 7, 0 /// 2, 5, 4, 8, 8, 7, 0 /// 2, 5, 4, 4, 8, 7, 0 /// 2, 5, 5, 4, 8, 7, 0 /// 2, 3, 5, 4, 8, 7, 0 /// </summary> /// <param name="data"></param> public static void InsertSort(int[] data) { int len = data.Length; for(int i=1;i<len;i++) { if (data[i] < data[i - 1]) { int temp = data[i]; data[i] =data[i-1]; int j; for (j = i-1; j > 0; j--) { if (data[j - 1] > temp) data[j] = data[j-1]; else break; } data[j] = temp; } }// end for } /// <summary> /// 归并排序 /// </summary> /// <param name="data"></param> public static void MergeSort(int[] data) { int[] temp_arr = new int[data.Length]; MergeSort(data,temp_arr , 0, data.Length - 1); } public static void MergeSort(int[] data,int[] temp_arr,int left ,int right) { if (left < right) { int center = (left + right) / 2; MergeSort(data, temp_arr, left, center); MergeSort(data, temp_arr, center+1, right); Merge(data, temp_arr, left, center, right); } } private static void Merge(int[] data,int[] temp_arr,int left,int center,int right) { int i = left; int j = center+1; int k = left; while (i <= center && j <= right) { if (data[i] < data[j]) temp_arr[k++] = data[i++]; else temp_arr[k++] = data[j++]; } while (i <= center) temp_arr[k++] = data[i++]; while (j <= right) temp_arr[k++] = data[j++]; while (left <= right) data[left] = temp_arr[left++]; } public static void Test() { int[] data = new int[] { 2, 5, 4, 8, 3, 7, 0 }; SortArithmetic.InsertSort(data); foreach(int temp in data) Console.Write(temp+","); } }