十大经典排序算法C++实现
作者:互联网
文章目录
十大经典排序算法(动图演示)
#include <iostream>
#include <vector>
using namespace std;
//冒泡排序
void bubblesort(vector<int>& arr){
for(int i=0;i<arr.size()-1;++i){
for(int j=0;j<arr.size()-1-i;++j){
if(arr[j]>arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
//选择排序
void selectionsort(vector<int>& arr){
int len=arr.size();
for(int i=0;i<len-1;++i){
int minidx=i;
for(int j=i+1;j<len;++j){
if(arr[j]<arr[minidx]) minidx=j;
}
int temp=arr[minidx];
arr[minidx]=arr[i];
arr[i]=temp;
}
}
//插入排序
void insertionsort(vector<int>& arr){
int indx,curr;
for(int i=1;i<arr.size();++i){
curr=arr[i];
int j=i;
while(j-1>=0&&arr[j-1]>curr){
arr[j]=arr[j-1];
--j;
}
arr[j]=curr;
}
}
//希尔排序
void shellsort(vector<int>& arr){
for(int gap=arr.size()/2;gap>0;gap=gap/2){
for(int i=gap;i<arr.size();++i){
int curr=arr[i];
int j=i;
while(j-gap>=0&&arr[j-gap]>curr){
arr[j]=arr[j-gap];
j-=gap;
}
arr[j]=curr;
}
}
}
//归并排序递归
void merge(vector<int>& arr,vector<int>& temparr,int lstart,int rstart,int rend){
int num=rend-lstart;
int ptr=lstart,lend=rstart;
while(lstart<lend&&rstart<rend){
if(arr[lstart]<arr[rstart]) temparr[ptr++]=arr[lstart++];
else temparr[ptr++]=arr[rstart++];
}
while(lstart<lend) temparr[ptr++]=arr[lstart++];
while(rstart<rend) temparr[ptr++]=arr[rstart++];
for(int i=0;i<num;++i,--rend){
arr[rend-1]=temparr[rend-1];
}
}
void msort(vector<int>& arr,vector<int>& temparr,int start, int end){
if(end-start==1) return;
else{
msort(arr,temparr,start,(start+end)/2);
msort(arr,temparr,(start+end)/2,end);
merge(arr,temparr,start,(start+end)/2,end);
}
}
void mergesort_recursion(vector<int>& arr){
vector<int> temparr(arr.size(),0);
msort(arr,temparr,0,arr.size());
}
//归并排序非递归
void mergesort(vector<int>& arr){
vector<int> temparr(arr.size(),0);
mergesortpass(vector<int>& arr,)
}
int main(){
int n=20;
vector<int> vRank(n,0);
for(int i=n,j=0;i>0;++j,--i){
vRank[j]=i;
cout<<i<<' ';
}
cout<<endl;
mergesort(vRank);
for(const auto& i:vRank){
cout<<i<<' ';
}
cout<<endl;
return 0;
}
标签:temparr,arr,end,int,C++,gap,算法,vector,排序 来源: https://blog.csdn.net/liu502617169/article/details/100024658