这里介绍几种简单排序,是我身为初学者的一种总结和归纳,如有不足,希望路过的大佬指出
一.计数排序
计数排序是特殊的排序,它不需要比较,以空间换时间的代价换来了高效,但同时也有局限性,首先不能对负数排序,其次对较大的数无能为力,浪费了大量空间,代码如下:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void countsort(int *arr,int Max,int n)
{
int *Count=new int[Max+1];
int *temp=new int[n];
memset(Count,0,(Max+1)*sizeof(int));
memcpy(temp,arr,n*sizeof(int));
for(int i=0;i<n;i++)
{
Count[arr[i]]++;
}
for(int i=1;i<Max+1;i++)
{
Count[i]=Count[i]+Count[i-1];
}
for(int i=0;i<n;i++)
{
arr[Count[temp[i]]-1]=temp[i];
Count[temp[i]]--;
}
delete[]Count;
delete[]temp;
Count=NULL;
temp=NULL;
}
int main()
{
int n;
cout<<"Input n:";
cin>>n;
int *arr=new int[n];
cout<<"Input "<<n<<" figures:";
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
int Max=*max_element(arr,arr+n);
countsort(arr,Max,n);
cout<<"After countsort:";
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
delete[]arr;
arr=NULL;
cout<<endl;
return 0;
}
二.选择排序
选择排序基本不用解释,是排序中最简单的算法,每个人都有必要掌握,代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
void selectSort(int *arr,int n)
{
for(int i=0;i<n;i++)
{
int minIndex=i;
for(int j=i+1;j<n;j++)
{
if(arr[minIndex]>arr