1 #include<stdio.h> 2 #define N 10 3 4 //數組的冒泡排序 5 6 int main(){ 7 int i,j; 8 int a[10]={48,62,35,77,55,14,35,98,22,40}; 9 for(i=0;i<10;i++){ 10 for(j=0;j<10-i-1;j++) 11 if(a[j]>a[j+1]) 12 { 13 a[j]^=a[j+1]; 14 a[j+1]^=a[j]; 15 a[j]^=a[j+1]; 16 } 17 } 18 printf("after:\n"); 19 for(i=0;i<10;i++) printf("%d ",a[i]); 20 return 0; 21 } 冒泡排序(固定最大值到循環末位)
1 #include<stdio.h> 2 #define N 10 3 4 //函數調用加找最小值放循環首位 5 6 void sort(int b[]){ 7 int i,j; 8 for(i=0;i<N;i++){ 9 for(j=i+1;j<N;j++){ 10 if(b[i]>b[j]){ 11 b[i]^=b[j]; 12 b[j]^=b[i]; 13 b[i]^=b[j]; 14 } 15 } 16 } 17 } 18 19 int main() { 20 int a[N]; 21 int i,j; 22 printf("input:\n"); 23 for(i=0;i<N;i++){ 24 scanf("%d",&a[i]); 25 } 26 printf("before:\n"); 27 for(i=0;i<N;i++){ 28 printf("%d ",a[i]); 29 } 30 printf("\n"); 31 sort(a); 32 printf("after:\n"); 33 for(i=0;i<N;i++){ 34 printf("%d ",a[i]); 35 } 36 return 0; 37 } 找最小值放循環首位
1 #include <stdio.h> 2 3 //輸入10個學生高考數學(分數為0到100的整數)成績,利用統計各分數出現次數來對這10名學生高考數學成績排序 4 5 int main(){ 6 int i,k=0,j=0; 7 int a[10];/* 保存10名學生成績 */ 8 int b[101];/* 數學成績的取值有101種 */ 9 printf("請輸入10個整數成績:\n"); 10 for(i=0;i<10;i++) 11 scanf("%d",&a[i]); 12 for(i=0;i<101;i++) 13 b[i]=0;/* 數學成績取值情況初始化為0 */ 14 for(i=0;i<10;i++) 15 b[a[i]]++; 16 /* 更新排序結果到a[]中 */ 17 for(i=0;i<101;i++) 18 { 19 if(b[i]!=0) 20 { 21 for(k=0;k<b[i];k++)/* 將重復成績按照統計出現的次數輸出 */ 22 { 23 a[j]=i; 24 j++; 25 } 26 } 27 } 28 printf("排序結果:\n"); 29 for(i=0;i<10;i++) 30 printf("%d ",a[i]); 31 return 0; 32 } 利用其他數組統計各數值出現次數排序