选择排序:采用数组 时间复杂度 O(n²)
#include <iostream>
using namespace std;
int main(){
void select_sort(int array[],int n);
int a[10],i;
cout<<"输入array:"<<endl;
for(i=0;i<10;i++)
{
cin>>a[i];
}
cout<<endl;
select_sort(a,10);
cout<<" 排序后的array:"<<endl;
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void select_sort(int array[],int n){
int i,j,k,t;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(array[j]<array[k])//将第i个数与后面的相比,如果小,就把下标给k
{
k=j;
}
}
//将下标为k的数替换到第i位,从第1个位置开始替换,从小到大排
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
选择排序:采用指针
#include <iostream>
using namespace std;
int main(){
void select_sort(int *p,int n);
int a[10],i;
cout<<"输入array:"<<endl;
for(i=0;i<10;i++)
{
cin>>a[i];
}
cout<<endl;
select_sort(a,10);
cout<<" 排序后的array:"<<endl;
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void select_sort(int *p,int n){
int i,j,k,t;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(*(p+j)<*(p+k))
{
k=j;
}
}
t=*(p+k);
*(p+k)=*(p+i);
*(p+i)=t;
}
}
冒泡排序:时间复杂度 O(n²)
#include <iostream>
using namespace std;
int main(){
void select_sort(int array[],int n);
int a[10],i;
cout<<"输入array:"<<endl;
for(i=0;i<10;i++)
{
cin>>a[i];
}
cout<<endl;
select_sort(a,10);
cout<<" 排序后的array:"<<endl;
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void select_sort(int array[],int n){
int i,j,t;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++)
{
if(array[j]>array[j+1])//开始进行比较,如果array[j]比array[j+1]的值大,那就交换位置
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
}
}