最近在看MIT的算法导论,在网易公开课上有这门课的视频,正好讲义也在图书馆借到了,有在看的小伙伴可以一起加油。
绪论中以插入排序为例,讲述了算法中非常重要的两个概念时间复杂度T(n)和空间复杂度。详细地对程序花费时间T。
伪代码:
INSERTION-SORT(A)
1 for j←2 to length[A]
2 do key←A[j]
3 Insert A[j] into the sorted
4 sequence A[1..j-1].
5 i←j-1
6 while i>0 and A[i]>key
7 do A[i+1] ← A[i]
8 i←i-1
9 A[i+1]←key
根据伪代码我实现了一下插入排序,今天开始的平时训练,开始注意格式规范,还有更专业地添加注释:
1 #include <iostream>
2 /*************************************************************************************************************
3 *
4 * Function Name :InsertionSort
5 * Description :One of the famous sorting algorithm
6 * insert a number into a sorted sequence
7 * the new sequence still in order
8 * Input :An random array
9 * Output :sorted array
10 * Return :None
11 *
12 **************************************************************************************************************/
13 void InsertionSort(int* a,int n)
14 {
15 int key;
16 for(int j=1;j<n;j++)
17 {
18 key = a[j];
19 for(int i=j-1;i>=0&&a[i]>key;i--)
20 {
21 a[i+1]=a[i]; //a[i+1]←a[i]
22 a[i]=key;
23 }
24 }
25 }
26
27
28 void main()
29 {
30 int a[10]={8,6,11,55,2,9,3,23,1,32};
31 printf("排序前:");
32 for(int i=0;i<10;i++)
33 printf("%d ",a[i]);
34 printf("
");
35 InsertionSort(a,10);
36 printf("排序后:");
37 for(int i=0;i<10;i++)
38 printf("%d ",a[i]);
39 system("pause");
40 }
实验结果:
算法比较基础,简单,只是作为自己的一个整理,大家不喜勿喷。