a225
輸入說明 :
有多組測試資料,以 EOF 結束。 每組測試資料以一個 n(<=1000) 開始,表示明明拿到了幾個數字。接著有 n 個以空白隔開的整數。
輸出說明 :
請輸出排序後的結果,以空白隔開。
一樣用bubble sort去排
第一次先比個位數 if(s[i]%10>s[i+1]%10)
第二次比要先確定(個位數一樣才換) if(s[i]%10==s[i+1]%10&&s[i]<s[i+1])
不然第一次就白排了
不想自己寫的話,也可以叫qsort 這篇有教有兩個條件的話,qsort比較函數要怎麼寫
#include<stdio.h>
void readarray(int n,int [1000]);
void sortarray1(int n,int [1000]);
void sortarray2(int n,int [1000]);
void printarray(int n,int [1000]);
int main(){
int array[1000];
int n;
while(scanf("%d",&n)!=EOF)
{
array[100]=0;
readarray(n,array);
sortarray1(n,array);
sortarray2(n,array);
printarray(n,array);
printf("\n");
}
return 0;
}
void readarray(int n,int s[1000]){
for(int i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
}
void printarray(int n,int s[1000]){
for(int i=0;i<n;i++)
{
printf("%d ",s[i]);
}
}
void sortarray1 (int n,int s[1000]){
int temp;
for(int j=1;j<n;j++)
{
for(int i=0;i<n-j;i++)
{
if(s[i]%10>s[i+1]%10)
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
}
}
void sortarray2 (int n,int s[1000]){
int temp;
for(int j=1;j<n;j++)
{
for(int i=0;i<n-j;i++)
{
if(s[i]%10==s[i+1]%10&&s[i]<s[i+1])
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
}
}