C语言中常见的排序方法

时间:2022-01-03 20:58:02

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