参考:Wiki 排序算法

插入排序

插入排序的基本思想是,将元素逐个添加到已经排序好的数组中去,同时要求,插入的元素必须在正确的位置,这样原来排序好的数组是仍然有序的。
25133053-f6b843e2d20e4ff5bce762e75bcdd4d1.gif

  1. public static void InsertSort(double[] data)
  2. {
  3. int i, j;
  4. var count = data.Length;
  5. for (i = 1 ; i < count ; i++)
  6. {
  7. var t = data[i];
  8. for(j = i - 1; j >= 0 && data[j] > t; j--)
  9. {
  10. data[j + 1] = data[j];
  11. }
  12. data[j + 1] = t;
  13. }
  14. }

冒泡排序

冒泡排序的基本思想是,不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。
Bubble_sort_animation.gif

  1. static void BubbleSort(int[] intArray)
  2. {
  3. int temp = 0;
  4. bool swapped;
  5. for (int i = 0; i < intArray.Length; i++)
  6. {
  7. swapped = false;
  8. for (int j = 0; j < intArray.Length - 1 - i; j++)
  9. {
  10. if (intArray[j] > intArray[j + 1])
  11. {
  12. temp = intArray[j];
  13. intArray[j] = intArray[j + 1];
  14. intArray[j + 1] = temp;
  15. if (!swapped)
  16. swapped = true;
  17. }
  18. }
  19. if (!swapped)
  20. {
  21. return;
  22. }
  23. }
  24. }