算法导论2-1-1

来源:互联网 发布:springmvc返回json 编辑:程序博客网 时间:2024/05/21 11:31

闲来无事,看了下算法导论,发现还是有写点东西的必要,因为这本书解答不太详细,所以我决定将自己学习的东西贴上来,希望能够共同学习,各位大牛能够多多指教。


下面是算法导论第二章1-1的习题源码,插入排序。

问题描述:

用插入排序说明数组A=<51, 41, 59, 26, 41, 58>排序过程。

#include<iostream>#include<time.h>using namespace std;typedef int Elem;void Show(Elem *A, int n){for (int i = 1; i <= n; i++){cout << A[i] << " ";}cout << endl;}//插入排序voidINSERTION_SORT( Elem *A,int n){int count = 0;//统计经过运行次数Show(A, 6);cout << endl;Elem key;int i = 1, j = 1;//记录时间clock_t start, finish;double totaltime;start = clock();//插入排序算法核心块/************************************************************************************/for ( j = 2; j <= n; j++){key = A[j];i = j - 1;while (i > 0 && A[i] > key){count++;A[i + 1] = A[i];i = i - 1;}A[i + 1] = key;Show(A, j);}/************************************************************************************///完成时间(秒)finish = clock();totaltime = (double)(finish - start) / CLOCKS_PER_SEC;cout << endl <<"插入排序算法的运行次数为:"<< count << endl;cout << "插入排序算法的运行时间(秒)为:" << totaltime << endl << endl;}void main(){Elem A[7] = { 0,51, 41, 59, 26, 41, 58 };INSERTION_SORT(A,6);}


0 0
原创粉丝点击