算法导论学习之sort

来源:互联网 发布:在淘宝上如何粘贴链接 编辑:程序博客网 时间:2024/05/17 00:13
/************************************************************************//* insert sort algorithm                                                *//* pbImage 27/08/2013*//************************************************************************/#include <iostream>#include <vector>using namespace std;void InsertionSort(vector<int> &data){int i = 0, key = 0;for (int j = 1; j < data.size(); j++){key = data[j];i = j - 1;while( i >= 0 && data[i] > key){data[i + 1] = data[i];i = i - 1;}data[i + 1] = key;}return;}int main(){int data[10] = {11, 2, 5, 21, 3, 90, 24, 8, 73, 10};vector< int > test_data(10);for (int i = 0; i < 10; i++){test_data[i] = data[i];}cout<<"Before sort:"<<endl;for (int i = 0; i < 10; i++){cout<<test_data[i]<<'\t';}cout<<endl;InsertionSort(test_data);cout<<"After sort:"<<endl;for (int i = 0; i < 10; i++){cout<<test_data[i]<<'\t';}cout<<endl;return 0;}
/*选择排序*/void SelectionSort(vector<int> &data){for (int i = 0; i < data.size() - 1; i++){int min_val = data[i];int min_id = i;for (int k = i + 1; k < data.size(); k++){if (data[k] < min_val){min_val = data[k];min_id = k;}}if (min_id != i){min_val = data[i];data[i] = data[min_id];data[min_id] = min_val;}}return;}


循环不变式的三大性质:

1. 初始化:在循环的第一轮迭代开始之前,正确;

2. 保    持:在某次迭代开始前若正确,那么下一次迭代之前,也正确;

3. 终    止:循环结束时,不变式给我们一个有用的性质,去判定算法是否正确。

原创粉丝点击