冒泡排序:
public void Sort(int[] list) { int i, j, temp; bool done = false; j = 1; while ((j < list.Length) && (!done)) { done = true; for (i = 0; i < list.Length - j; i++) { if (list[i] > list[i + 1]) { done = false; temp = list[i]; list[i] = list[i + 1]; list[i + 1] = temp; } } j++; } }
选择排序:
public void Sort(int[] list) { int min; for (int i = 0; i < list.Length - 1; ++i) { min = i; for (int j = i + 1; j < list.Length; ++j) { if (list[j] < list[min]) min = j;// min就是剩下元素中最小的那个的索引值 } // 交换最小值和当前值,达到从小到大的要求 int t = list[min]; list[min] = list[i]; list[i] = t; } }
插入排序:
public void Sort(int[] list) { for (int i = 1; i < list.Length; ++i) { int t = list[i]; int j = i; // 寻找插入点,从后往前把插入点后的元素后移 while ((j > 0) && (list[j - 1] > t)) { list[j] = list[j - 1]; --j; } list[j] = t; } }
希尔排序:
public void Sort(int[] list) { int inc; // 确定合适的间隔 for(inc = 1; inc <= list.Length/9; inc = 3*inc+1); for( ; inc > 0; inc /= 3) // 每次间隔缩短2/3 { for( int i = inc + 1; i <= list.Length; i += inc ) { int t = list[i-1]; int j = i; // 插入排序 while( ( j > inc ) && ( list[j - inc - 1] > t ) ) { list[j-1] = list[j - inc - 1]; j -= inc; } list[j-1] = t; } } }
主函数:
static void Main(string[] args) { int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 }; Sort(iArrary); for (int m = 0; m < iArrary.Length; m++) Console.Write("{0} ", iArrary[m]); Console.WriteLine(); }