首页 新闻 会员 周边 捐助

折半插入排序:结果出错,各位帮忙看看是不是算法错了!!!

0
悬赏园豆:5 [已解决问题] 解决于 2012-04-18 14:13
 1 /// <summary>
 2         /// 折半排序
 3         /// </summary>
 4         /// <param name="sqList"></param>
 5         public void BInsertSort(List<int> sqList)
 6         {
 7             for (int i =1; i < sqList.Count; i++)
 8             {
 9                 int key = sqList[i];
10                 int low = 0, high = i - 1;
11                 while (low < high)
12                 {
13                     int mid= (low + high) / 2;
14                     if (key <sqList[mid])
15                         high = mid - 1;
16                     else
17                         low = mid + 1;
18                 }
19 
20                 for (int j = i - 1; j >=high + 1; j--)
21                 {
22                     sqList[j + 1] = sqList[j];
23                 }
24                 sqList[high +1] = key;
25             }
26         }
27 
28 
29 
30 
31 
32 
33 
34   static void Main(string[] args)
35         {
36  List<int> sq = new List<int>{ 3, 4, 51, 8, 5, 9, 2, 34,6,44,33 };
37   BinaryInsertioSort bis = new BinaryInsertioSort();
38             bis.BInsertSort(sq);
39             foreach (var x in sq)
40             {
41                 Console.WriteLine("{0}" ,x);
42             }
43             Console.ReadKey();
44         }

C#
小云菜的主页 小云菜 | 初学一级 | 园豆:101
提问于:2012-04-17 21:42
< >
分享
最佳答案
0

建议看看这篇文章:排序>>>插入排序>>>折半插入排序

收获园豆:5
artwl | 专家六级 |园豆:16736 | 2012-04-17 22:21

问个问题:while(low<high) 和while(low<=high)结果差别这么大?

且 for(int j=i-1;j>=high+1;j--)与for(int j=i-1;j>=low;j--)

这里的区别在哪里?

细节啊,细节决定成败!!!

小云菜 | 园豆:101 (初学一级) | 2012-04-18 14:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册