算法导论(Exercise 2.3-6)
2017-04-15 21:57
260 查看
#include<iostream> #include<vector> #include<string> #include<set> #include<map> #include<unordered_set> #include<unordered_map> #include<algorithm> #include<xfunctional> using namespace std; int Binary_search(vector<int>& arr,int element,int start,int end){ int i = start; int j = end; int mid; while (i <= j){ mid = (i+j) / 2; if (arr[mid] >= element) j = mid - 1; else i = mid + 1; } return mid; } void Insetion_Sort(vector<int>& arr){ for (int i = 1; i < arr.size(); i++){ int pos = Binary_search(arr,arr[i],0,i-1); if (pos == i - 1 && arr[pos] < arr[i]) continue; int key = arr[i]; for (int j = i - 1; j >=pos; j--) arr[j + 1] = arr[j]; arr[pos] = key; } } int main(){ int n; cout << "Input the size(>=1) of the array:"; cin >> n; vector<int> arr(n,0); cout << "Input the array element:"; for (int i = 0; i < n; i++) cin >> arr[i]; Insetion_Sort(arr); for (int i = 0; i < arr.size(); i++) cout << arr[i] << " "; cout << endl; system("pause"); return 0; }
相关文章推荐
- 算法导论 Exercise2.3-5(implement binary search iteratively)
- 算法导论(Exercise 2.3-7)
- 算法导论学习笔记(3)-习题2.3-7-排序+二分
- 算法导论习题Exercise 3.2
- 《算法导论》2.3-7 检查集合中是否存在两数字和为指定的X--算法和证明
- 算法导论(CLRS, 2nd) 个人答案 Ch2.3
- 算法导论 2.3-4
- 《算法导论》习题2.3-4 插入排序的递归版本
- 算法导论习题Exercise 3.2
- 算法导论 Exercise 4.2-2
- 使用Java完成《算法导论》习题2.3-2
- 算法导论Java实现-二分查找运用(习题2.3-7)
- 算法导论 练习 2.3-3
- 算法导论 习题2.3-4(the implemention of insertion sort recursively)
- 《算法导论》学习笔记之Chapter 2-2.1,2.2,2.3插入排序,选择排序,归并排序
- 算法导论 Exercise 4.2-2
- 使用Java完成《算法导论》习题2.3-4
- 算法导论 练习 2.3-4
- 算法导论 2.3-6(更正)
- 算法导论课后题 2.3-7答案