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