首页 新闻 赞助 找找看

我这个算法属于插入排序吗?

0
[已解决问题] 解决于 2013-03-28 19:30

这个是我对插入排序理解自己写的

而这是我从网上找到的插入排序算法。

哪个效率会高些?

Orangutan的主页 Orangutan | 菜鸟二级 | 园豆:202
提问于:2013-03-25 19:17
< >
分享
最佳答案
0

差不多,目测你的更好,

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;
            }
        }

 

奖励园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2013-03-25 21:40

嗯,多谢!

Orangutan | 园豆:202 (菜鸟二级) | 2013-03-25 22:15
其他回答(2)
0

- -

百品 | 园豆:253 (菜鸟二级) | 2013-03-25 19:18
0

你写的是什么?哪个是升序排列。进行的是两两比较,如果数据小你这种方式很快。但是上G数量的那种,你要循环一遍就太慢了。

第二种,他先遍历整个数据,查找到比当前数据小的时候,在进行插入。大数据时比你那种效率会高。

伏草惟存 | 园豆:1420 (小虾三级) | 2013-03-26 09:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册