低效率算法排序测试地址:http://acm.hdu.edu.cn/showproblem.php?pid=1040
高效率算法排序测试地址:http://acm.hdu.edu.cn/showproblem.php?pid=1425
选择排序
循环遍历,每次选择出[i,n]中最小的置于i位置
#include<bits/stdc++.h>
#define MAXN 1005
using namespace std;
int a[MAXN];
void mysort(int len){
for(int i=0;i<len-1;i++){
int index=i; //标记最小的数
for(int j=i+1;j<len;j++){
if(a[j]<a[index]){
index=j;
}
}
int tmp=a[i];//最小的数将与第i个数交换
a[i]=a[index];
a[index]=tmp;
}
}
void print(int len){
for(int i=0;i<len-1;i++){
printf("%d ",a[i]);
}
printf("%d\n",a[len-1]);
}
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
mysort(n);
print(n);
}
return 0;
}
冒泡排序
#include<bits/stdc++.h>
#define MAXN 1005
using namespace std;
int a[MAXN];
void mysort(int len){
for(int i=0;i<len-1;i++){
for(int j=0;j<len-1-i;j++){
if(a[j]>a[j+1]){ //相邻元素比较判断交换
int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
void print(int len){
for(int i=0;i<len-1;i++){
printf("%d ",a[i]);
}