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;        
        }
   }
 }

}