using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Sort(); int[] arr = new int[] { 6, 3, 8, 4, 6, 3, 2,5,6,8 }; XESort(arr,7); } } //插入排序:从第二个数据开始,遍历所有元素,作为基准点;然后遍历这个基准点之前的所有元素和这个数据进行比较, //然后判断,数据大小,大的后移,利用j--,一直找到合适的位置,然后arr[j]=temp;赋值即可 private void Sort() { int[] arr = new int[] { 56,12,34,45,22,34,56,23,45,67}; int i, j, temp; for (i = 0; i < arr.Length; i++) { temp = arr[i]; for (j = i; j > 0; j--) { if (temp < arr[j - 1]) { arr[j] = arr[j - 1]; } else { break; } } arr[j] = temp; } } //希尔排序 private void XESort(int[] a, int n) { // int[] arr = new int[] { 6, 3, 8, 4, 6, 3, 2,5,6,8 }; int i, j, h,temp; for (h = n / 2; h > 0; h = h / 2)//循环所得 增量值 { for (i = h; i < n; i++)//循环的到点值 { temp = a[i];//把点值付给temp for (j = i - h; j >= 0 && temp < a[j]; j = j - h) { a[j + h] = a[j]; } a[j + h] = temp;//很多情况下这个j为负值-1 } } } //冒泡排序 private void MPSort() { int[] arr = new int[] { 6, 3, 8, 4, 6, 3, 2, 5, 6, 8 }; int middleVal; bool flag = false; //交换标志 for (int i = 1; i < arr.Length; i++) { flag = false; for (int j = arr.Length - 1; j >= i; j--) { if (arr[i] < arr[j - 1]) { middleVal = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = middleVal; flag = true; } } if (!flag) //如果没有发生交换,终止算法 return; } } //快速排序 private static void QuickSort(int lowest, int highest) { int[] array = new int[] { 49, 38, 65, 97, 76, 13, 27, 49 }; if (array == null || lowest < 0 || lowest >= highest || highest >= array.Length) { return; } int low = lowest; int high = highest; int key = low++; for (; low <= high; ) { if (key < high) { if (array[key] > array[high]) { array[high] = array[key] + (array[key] = array[high]) * 0; key = high; } high--; } if (key > low) { if (array[key] < array[low]) { array[low] = array[key] + (array[key] = array[low]) * 0; key = low; } low++; } } for (int i = 0; i < array.Length; i++) { Console.Write(array[i] + ", "); } Console.WriteLine(); QuickSort(lowest, key - 1); QuickSort(key + 1, highest); } //选择排序 //从第一个开始 每一个他后边的所有进行比较,如果前边的大于后边的那么两者交换值,最小的值在前边,最大的值在最后 ------- 命名;向后扫描法 protected void Button2_Click(object sender, EventArgs e) { int[] arr = new int[] { 49, 38, 65, 97, 76, 13, 27, 49 }; int min, tmp; for (int i = 0; i < arr.Length - 1; i++) { min = i; for (int j = i + 1; j < arr.Length; j++) { string a = arr[min].ToString(); string b = arr[j].ToString(); if (arr[min] > arr[j]) { min = j;//每一个for循环一遍的到一个每次中的最小的值的索引 } } tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } foreach (var a in arr) { Response.Write(a + ","); } } }