算法导论第一个算法就是插入排序,思想简单,如果是从小到大排序,就是从第二个数开始,和前边的数比较,直到大于等于前边那一个数,然后放在那个位置。
而且,先用Python写,就相当于伪代码,特别好,既有思路,还把Python练习一下,然后再用C++。
Python代码:
def insertSort(A):
for i in range(1,len(A)):
key = A[i]
j = i - 1
while j >= 0 and key < A[j]:
A[j+1] = A[j]
j = j - 1
A[j+1] = key
if __name__ == "__main__":
A = []
input_A = input('please input:')
for item in input_A.split():
A.append(int(item))
insertSort(A)
print(A)
C++代码:
void insertSort(vector<int>& a) {
int size = a.size();
for (int i = 1; i < size; i++) {
int key = a[i];
int j = i - 1;
while (j >= 0 && key < a[j]) {
a[j+1] = a[j];
j = j - 1;
}
a[j+1] = key;
}
}
第一天,完成任务。凌晨1:48 睡觉觉喽
- 选择排序(selection sort)
思想:全局找到最小值,和第一个数互换,然后在剩下的数中找到最大的数,和第二个数互换。。。。
Python实现:
def selectionSort(A):
length = len(A)
for i in range(length - 1):
min_num = i
for j in range(i+1,length):
if A[j] < A[min_num]:
min_num = j
A[i],A[min_num] = A[min_num],A[i]
return A
C++:
void selectionSort(vector<int>& a) {
int size = a.size();
for (int i = 0; i < size - 1; i++) {
int minNum = i;
for (int j = i + 1; j < size; j++) {
if (a[j] < a[minNum]) {
minNum = j;
}
}
swap(a[i],a[minNum]);
}
}