(ctrl + alt + L 调出资源管理器)
原书采用的是伪代码,所以我将其改写成了C++描述的代码;
第2章 算法基础
1 .插入排序法:
for j=2 to A.length
key = A[j]
//insert A[j] into the sorted sequence A [1...j-1]
i=j-1
while i>0 and A[i]>key
A[i+1]=A[i]
i=i-1
A[i+1]=key
上述伪代码,如果有编程语言基础就不难看出它要表达的含义;
改写成C++:
using namespace std;
int main()
{//插入排序算法:
int A[6] = { 5,2,4,6,1,3 };
int j = 1;
int i = 0;
int key = 0;
for (j; j < 6; j++) {
key = A[j];
i = j - 1;
while (i >= 0 && A[i] > key) {
A[i + 1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}//算法主体
int n = 0;
for (n; n < 6; n++) {
cout << A[n] << endl;
}//输出
return 0;
}
(采用的变量名都是和伪代码相符合的。)
先把A[0]放在一边,然后A[1...5]一直往里插入,大的往后排,小的往前排。
练习:
2.1-2:将升序排列改变为降序排序排列:
using namespace std;
int main()
{//插入排序算法:
int A[6] = { 5,2,4,6,1,3 };
int j = 1;
int i = 0;
int key = 0;
for (j; j < 6; j++) {
key = A[j];
i = j - 1;
while (i >= 0 && A[i] < key) {//将>改写成<即可
A[i + 1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}
int n = 0;
for (n; n < 6; n++) {
cout << A[n] << endl;
}
return 0;
}