CodeBeauty
春暖花开
C++博客
首页
新随笔
新文章
联系
聚合
管理
posts - 6,comments - 3,trackbacks - 0
<
2024年11月
>
日
一
二
三
四
五
六
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
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
经典排序算法(C/C++实现)(5)
随笔档案
2012年5月 (6)
最新随笔
1. 鸡尾酒排序(改进的冒泡排序)
2. 同时找出最大值和最小值的一种优化算法(比较次数至多为3【n/2】)
3. 归并排序MergeSort
4. 插入排序InsertionSort
5. 冒泡排序BubbleSort
6. 计数排序CountSort
搜索
最新评论
1. re: 鸡尾酒排序(改进的冒泡排序)
鸡尾酒排序???第一次听说。这不是摇摆排序吗?
--11
2. re: 同时找出最大值和最小值的一种优化算法(比较次数至多为3【n/2】)
评论内容较长,点击标题查看
--flyinghearts
3. re: 冒泡排序BubbleSort[未登录]
嗯,还有优化的空间。
如果在一次扫描的过程中,没有交换发生,则说明已经排好序了,回此,可以提前结束,而不必进行接下来多躺无用的比较。
同样是写冒泡,质量就在这里。
--ithaca
阅读排行榜
1. 同时找出最大值和最小值的一种优化算法(比较次数至多为3【n/2】)(6487)
2. 鸡尾酒排序(改进的冒泡排序)(1988)
3. 冒泡排序BubbleSort(1628)
4. 插入排序InsertionSort(1597)
5. 归并排序MergeSort(1528)
评论排行榜
1. 同时找出最大值和最小值的一种优化算法(比较次数至多为3【n/2】)(2)
2. 鸡尾酒排序(改进的冒泡排序)(1)
3. 冒泡排序BubbleSort(1)
4. 插入排序InsertionSort(0)
5. 归并排序MergeSort(0)
插入排序InsertionSort
经典排序算法-插入排序InsertionSort
插入排序
就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
其时间复杂度为O(n)(最优)、O(n^2)(最差)、O(n^2)(平均)。这是一个对少量元素进行排序的有效算法。
算法描述
一般来说,
插入排序
都采用in-place在数组上实现。具体算法描述如下:
从第一个元素开始,该元素可以认为已经被排序
取出下一个元素,在已经排序的元素序列中从后向前扫描
如果该元素(已排序)大于新元素,将该元素移到下一位置
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到该位置中
重复步骤2~5
具体C++源代码如下:
#include
<
iostream
>
using
namespace
std;
/**/
/////////
/排序后输出函数
bool
Output(
int
b[],
int
length)
{
for
(
int
i
=
0
;i
<
length;i
++
)
{
cout
<<
b[i]
<<
"
"
;
}
cout
<<
endl;
return
true
;
}
/**/
/////////
/插入排序
void
InsertionSort(
int
arr[],
int
size_arr)
{
for
(
int
i
=
1
;i
<
size_arr;i
++
)
{
int
key
=
arr[i];
int
j
=
i;
while
((j
>
0
)
&&
(arr[j
-
1
]
>
key))
{
arr[j]
=
arr[j
-
1
];
//
交换顺序
--
j;
}
arr[j]
=
key;
}
}
void
main()
{
//
动态输入待排序数组
int
size_a;
cout
<<
"
Enter the numble of a: size_a=
"
;
cin
>>
size_a;
cout
<<
endl
<<
"
Enter a(size_a values):
"
;
int
*
a
=
new
int
[size_a];
for
(
int
i
=
0
;i
<
size_a;i
++
)
{
cin
>>
a[i];
}
cout
<<
endl
<<
"
former:
"
<<
endl;
Output(a,size_a);
cout
<<
endl
<<
"
later:
"
<<
endl;
//
调用插入排序
cout
<<
"
插入排序:
"
;
InsertionSort(a,size_a);
Output(a,size_a);
}
posted on 2012-05-10 12:44
代码之美
阅读(1597)
评论(0)
编辑
收藏
引用
所属分类:
经典排序算法(C/C++实现)
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
鸡尾酒排序(改进的冒泡排序)
归并排序MergeSort
插入排序InsertionSort
冒泡排序BubbleSort
计数排序CountSort
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理