您的位置:首页 > 其它

算法导论(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: