随笔 - 223  文章 - 0  评论 - 77  阅读 - 68万

数据结构之插入排序

插入排序是很常见的排序方式,通常我们使用的插入排序有下面几种:

1、直接插入排序

算法思想:第 i 趟插入排序为:在含有i-1个元素的有序子序列中插入一个元素,使其成为含有i个元素的有序子序列。在查找插入位置的过程中,可以同时后移元素。整个过程进行n-1趟插入,即先将整个序列的第1个元素看成是有序的,然后从第2个元素起逐个进行插入,直至整个序列有序。

复制代码
 1 void directInsertSort(int Arr[], int n)
 2 {
 3     int i, j, temp;
 4     for (i = 1; i<n-1; i++)
 5     {
 6         if(Arr[i] < Arr[i-1])
 7         {
 8             j = i - 1;
 9             temp = A[i];
10             while(j >= 0 && temp < Arr[j])
11             {
12                 Arr[j+1] = Arr[j];
13                 j--;
14             }
15             Arr[j+1] = temp;
16         }
17     }
18 }
复制代码

 

2、折半插入排序

算法思想:插入思想同直接插入排序,但寻找查找位置使用折半查找法。

复制代码
 1 void BinInsertSort(int Arr[], int n)
 2 {
 3     int i, j, low, high, mid, temp;
 4     for(i = 1; i <= n-1; i++)
 5     {
 6         temp = Arr[i];
 7         low = 0;
 8         high = i - 1;
 9         while(low <= high)
10         {
11             mid = (low + high)/2;
12             if(temp > Arr[mid])
13                 low = mid - 1;
14             else
15                 high = low + 1;
16         }
17         for(j = 1; j > low; j--)
18             Arr[j] = Arr[j-1];
19     }
20 }
复制代码

 

posted on   Arthurian  阅读(378)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示