差不多,目测你的更好,
1. 第二个for遍历,应该从 大到小 j--,而不是 从小到大j++,如果后面的都小于要比较的值,可以跳过了,j++相当全部去比较了。
2.可以考虑 在里面那个for遍历之前把 值提出来 如 第二种方法中的 temp变量,第二个for比较的其实都是temp,里面可以不 给temp再赋值(其实调换 也是temp的值,当然索引是相当快的)。
3.第二个 既能用 comparto,不晓得这个 怎么样....
参考如下:
//插入排序 public static void InsertionSort(int[] nums) { for (int i = 1; i < nums.Length; i++) { int t = nums[i]; int j = i; while ((j > 0) && (nums[j - 1] > t)) { nums[j] = nums[j - 1];//交换顺序 --j; } nums[j] = t; } }
嗯,多谢!
- -
你写的是什么?哪个是升序排列。进行的是两两比较,如果数据小你这种方式很快。但是上G数量的那种,你要循环一遍就太慢了。
第二种,他先遍历整个数据,查找到比当前数据小的时候,在进行插入。大数据时比你那种效率会高。