算法导论 第8章 线性时间排序 C++实现
来源:互联网 发布:js input 回车事件 编辑:程序博客网 时间:2024/06/04 23:32
chapter8.h
#ifndef CHAPTER8_H#define CHAPTER8_H//CLRS chapter 8- sorting in linear time//by full_speed_turbo// 20140521#include<iostream>#include<vector>#include<list>void counting_sort(std::vector<int>& a, std::vector<int>& b,int k){std::vector<int> c(k+1,0);for(int j=0;j<a.size();j++){c[a[j]]++;}for(int i=1;i<=k;i++){c[i]+=c[i-1];}for(int j=a.size()-1;j>=0;j--){b[c[a[j]]-1]=a[j];c[a[j]]--;}}//8.3 radix sort//insertion sort for radix sortvoid insertion_sort_radix(std::vector<int>& a,std::vector<int>& b){for(int j=1;j<a.size();j++){int keya=a[j];int keyb=b[j];int i=j-1;while(i>=0&&b[i]>keyb){a[i+1]=a[i];b[i+1]=b[i];i--;}a[i+1]=keya;b[i+1]=keyb;}}//redix sortvoid radix_sort(std::vector<int>& a,int d){for(int i=0;i<d;i++){std::vector<int> b(a.size(),0);for(int j=0;j<a.size();j++)//b[j]=(a[j]/10^i)%10;//priority problemb[j]=a[j]/10^i%10;insertion_sort_radix(a,b);}}//8.4 bucket sortvoid bucket_sort(std::vector<double>& a){std::vector< std::list<double> > b(a.size(),std::list<double>());for(int i=0;i<a.size();i++)b[(int)(a.size()*a[i])].push_back(a[i]);for(int i=0;i<b.size();i++)if(b[i].size()>1)b[i].sort();int k=0;for(int i=0;i<b.size();i++)if(b[i].empty()==false)for(std::list<double>::iterator itr=b[i].begin();itr!=b[i].end();itr++,k++)a[k]=*itr;}template<class T>void display_vector(std::vector<T>& a){for(int i=0;i<a.size();i++)std::cout<<a[i]<<" ";std::cout<<std::endl;}#endif
chapter8_test.cpp
#include"chapter8.h"void main(){//int arr[]={2,5,3,0,2,3,0,3};//std::vector<int> a(arr,arr+8);//std::vector<int> b(8,0);//counting_sort(a,b,5);//display_vector(b);//int arr[]={329,457,657,839,436,720,355};//std::vector<int> a(arr,arr+7);//radix_sort(a,3);//display_vector(a);double array_bucket[]={0.78,0.17,0.39,0.26,0.72,0.94,0.21,0.12,0.23,0.68};std::vector<double> a(array_bucket,array_bucket+10);bucket_sort(a);display_vector(a);}
0 0
- 算法导论 第8章 线性时间排序 C++实现
- 算法导论学习笔记-第8章 线性时间排序
- 算法导论代码 第8章 线性时间排序
- 算法导论 第8章 线性时间排序
- 算法导论第8章线性时间排序答案
- 算法导论第8章—线性时间排序
- 算法导论第8章:线性时间排序
- 算法导论:第8章 线性时间排序__基数排序
- 《算法导论》第8章 线性时间排序 个人笔记
- 算法导论 第8章 线性时间排序-计数排序的原址排序
- 算法导论 第8章 线性时间排序(计数排序、基数排序、桶排序)
- 《算法导论》第8章 线性时间排序 (1)计数排序
- 算法导论:第8章 线性时间排序__计数排序
- 算法导论第八章-线性时间排序-Cpp代码实现
- 2011-03-06 算法导论 第8章 线性时间排序
- 算法导论: 第八章 线性时间排序
- 算法导论第八章:线性时间排序
- [算法导论]第八章《线性时间排序》
- 在androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan" 可以让界面不被弹出的键盘挤上去。
- 进击的多线程 --- 线程间的通信
- 项目学习主题四:Activedirectory
- startActivityForResult用法详解
- makefile redefinition or previous definition
- 算法导论 第8章 线性时间排序 C++实现
- Java学习线路
- Oracle 客户端 使用 expdp/impdp 示例 说明
- centos安装g77编译器
- wifi相关协议 IEEE 802,11
- Python - 字符串的替换(interpolation) 详解
- C++中野指针和空指针和无类型指针
- 搭建LVS+KeepAlived环境
- 蓝桥杯 城市建设