排序算法

▼魔方 西西 提交于 2021-02-14 15:36:07
#include<iostream>
using namespace std;
//选择排序
void SelectSort(int list[],int n)
{int temp,t,i,j,big;
for(i=0;i<n-1;i++)
  {big=i;
   for(j=i+1;j<n;j++)
      {
       if(list[big]<list[j])
       big=j;
      }
   temp=list[i];
   list[i]=list[big];
   list[big]=temp;
   }
  for(t=0;t<n;t++)
  {cout<<list[t];}
}
//冒泡排序
void bubble(int list[],int n){
int i,temp;
for(int p=1;p<n;p++)
   {
    for(i=0;i<n-p;i++)
     if(list[i]<list[i+1])
        {temp=list[i];
          list[i]=list[i+1];
          list[i+1]=temp;
    }
  }
for(i=0;i<n;i++)
  {cout<<list[i];}}
//插入排序
void Insert(int list[],int n)
{
for(int i=1;i<n;i++)
  { int key = list[i];
    int j=i-1;
   
   while(j>=0&&key>list[j])
     {list[j+1]=list[j];
      j--;
     }
     list[j+1]=key;
     }
   for(int i=0;i<n;i++)
   cout<<list[i];
}
//基数排序
int maxbit(int list[],int n)
 {
  int d=0;
  int i;
  int *temp=new int[n];
  for(i=0;i<n;i++)
  temp[i]=list[i];
 for(i=0;i<n;i++)
  {
   int p=1;
   while(temp[i]/10>0)
    {p++;
     temp[i]/=10;
   } 
   if(d<p)
    d=p;
  }
  delete[]temp;
  return d;
}
  void radixSort(int list[],int n)
  {
   int d=maxbit(list,n);
   int *temp=new int[n];
   int *count=new int[10];
    int i,j,k;
    int radix=1;
   for(i=1;i<=d;i++)
   {
    for(j=0;j<n;j++)
     {count[j]=0;
    }
    for(j=0;j<n;j++)
     { 
      k=(list[j]/radix)%10;
      count[k]++;
     }
     for(j=1;j<10;j++)
     {
      count[j]=count[j-1]+count[j];
    }
    for(j=n-1;j>=0;j--)
    {
     k=(list[j]/radix)%10;
     count[k]--;
    temp[count[k]]=list[j];
   }
    for(j=0;j<n;j++)
    {
    list[j]=temp[j];
   }
    radix=radix*10;
   }
   delete [] temp;
   delete [] count;
   for(i=0; i<n;i++)
   {cout<<list[i];}
}  
int main()
{int n,t;
cout<<"请输入n个数:"<<endl;
cin>>n;
int *list=new int[n];
cout<<"请依次输入n个数";
for(t=0;t<n;t++)
  cin>>list[t];
SelectSort(list,n);
//bubble(list,n);
//Insert(list,n);
 //radixSort(list,n);
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!