標籤:
在C語言中,常見的排序方法有冒泡法,排序法,插入法等等。所謂的冒泡法,就是對一組數字進行從大到小或者從小到大的一種排序方法。主要就是相鄰的數值相互交換。從第一個數值開始,如果這相鄰的兩個數值排序與我們希望的排序位置不同時,那麼就將兩個數的位置進行交換。如果一致,就不用交換。一直重複這個過程,直到沒有數值需要交換為止,則排序完成。下面是將10個學生的成績用冒泡法按順序排列的做法:
1 #include<stdio.h> 2 int main() 3 { 4 int i; 5 int arr[10]; 6 for(i=0;i<10;i++) 7 { 8 printf("請輸入第%d個學生的成績:\n",i+1); 9 scanf("%d",&arr[i]);10 }11 12 int j;13 for(j=0;j<9;j++)14 {15 for(i=0;i<9;i++) //迴圈9次16 {17 int temp=arr[i]; //將arr[i]賦值到一個變數中,arr[i+1]賦值到arr[i]中,此時相鄰兩個數值換位。18 arr[i]=arr[i+1];19 arr[i+1]=temp;20 }21 }22 for(i=0;i<10;i++) 23 {24 printf("%d\n",&arr[i]);25 }26 27 28 return 0;29 }
選擇法:
選擇法是用一個變數不斷地選擇小的數,將值付給變數再通過變數付給相應位置的數組元素…
#include<stdio.h>int main(){ int i; int arr[10]; for(i=0;i<10;i++) { printf("請輸入第%d個學生的成績:\n"); scanf("%d",&arr[i]); } int j; for(j=0;j<10;j++) { for(i=j;i<10;i++) { if(arr[j]>arr[i]) // 判斷 arr[j]>arr[i] ,條件成立則將arr[j]與 arr[i]交換 { int temp=arr[j]; arr[j]=arr[i]; ar[i]=temp; } } } for(i=0;i<10;i++) { printf("%d",&arr[i]); }return 0;}
插入法:
#include<stdio.h>int main(){ int arr[7]={2,4,5,23,45,78}; int num; printf("請輸入一個數字:\n",num); scanf("%d",&num); int i=0; //初始化為0 int index=6; for(;i<6;i++) { if(num>=arr[i]&&num<arr[i+1]) //判斷輸入的值大於等於前一項且小於後一項時,成立則將這個值插入後一項 { index=i+1; break; } if(num<arr[0]) //判斷輸入的值小於第一項,成立則這個值放在第一項 { index=0;break; } } for(i=6;i>index;i--) { arr[i]=arr[i-1]; } arr[index]=num; for(i=0;i<7;i++) { printf("%d",arr[i]); }return 0;}
C語言中常見的排序方法