C语言十大排序一

2018-09-05  本文已影响0人  AuglyXu

计数排序

代码如下:

//需求:输入5个0~9的值,按由小到大输出
int num[10] = {0};
int len = sizeof(nums) / sizeof(nums[1]);
int value = -1;
for(int i = 0;i < 5;i++)
{
     printf("请输入一个数字\n");
     scanf("%i",&value);
     num[value] += 1;
}
for(int i = 0;i < len;i++)
{
    for(int j = 0;j < num[i];j++)
    {
      printf("%i ",i);
    }
}

选择排序

//在键盘上输入5个数字,按由小到大输出
//第一轮进行4次比较,第二轮进行3次比较,第三轮进行2次比较,第四轮进行一次比较
//和我们打印图形时打印的倒三角十分相似
int num[5] = {0};
int len = sizeof(nums) / sizeof(nums[1]);
for(n = 0;n < len;n++)
{
     printf("请输入一个数字\n");
     scanf("%i",&num[n]);
}
//进行比较
for(i = 0;i < len - 1;i++)
{
    for(j = i;j < len - 1;j++)
    {
        if(num[i] > num[j+1])
      {
          int temp = num[i];
          num[i] = num[j+1];
          num[j+1] = temp; 
      }
    }
}
//输出
for(int i = 0;i < len;i++)
{
printf("%i ",num[i]);
}

冒泡排序

代码如下:

//在键盘上输入5个数字,按由小到大输出
//第一轮进行4次比较,第二轮进行3次比较,第三轮进行2次比较,第四轮进行一次比较
//和我们打印图形时打印的倒三角十分相似
int num[5] = {0};
int len = sizeof(num) / sizeof(num[1]);
for(n = 0;n < len;n++)
{
     printf("请输入一个数字\n");
     scanf("%i",&num[n]);
}
//进行比较
for(i = 0;i < len -1;i++)
{
    for(j = 0;j < len - 1 -i;j++)
    {
      if(num[j] > num[j+1])
        {
          int temp = num[j]
               num[j] = num[j+1];
               num[j+1] = temp;
        }
    }
}
for(int i = 0;i < len;i++)
{
printf("%i ",num[i]);
}

插入排序

代码如下:

 //需求:从键盘上输入5个数字,按由小到大输出
    //第一轮往前比较一次,第二轮比较两次......
    //和我们打印图形输出尖尖朝上的三角形很类似
    int num[5] = {0};
    int len = sizeof(num) / sizeof(num[1]);
    for(int n = 0;n < len;n++)
    {
         printf("请输入一个数字\n");
         scanf("%i",&num[n]);
    }
    //进行比较
    for(int i = 1;i < len;i++){
        int j = i;
        int temp = num[i];//取出用于比较的元素
        while(j > 0){
            //j>0意味着需要比较
            if(temp < num[j - 1]){
                //把num[j-1]这个元素向后挪一位,而后面的元素是num[j]也是temp
                num[j] = num[j-1];
            }else{
                break;
            }
            j--;
        }
        //循环结束后 j如果全部比较完,j应该是0,如果未全部比较完就跳出元素,则j应该就是那个num[j]>num[j-1]的j
        //这个时候num[j]空缺,未赋值,这个值就应该是用于比较的temp
        num[j] = temp;
    }
for(int i = 0;i < len;i++)
{
printf("%i ",num[i]);
}
#include <stdio.h>

int main()
{
    int num[5] = {5,1,3,7,9};
    //1.将每个元素和它前面的元素比较,如果按由小到大输出,比较的元素比前面一个元素小则交换否则不交换
    //2.一共5个元素要比四次
    int len = sizeof(num) / sizeof(num[0]);
    for(int i = 1;i < len;i++){
        for(int j = i;j > 0;j--){
            if(num[j]<num[j-1]){
                int temp = num[j];
                num[j] = num[j-1];
                num[j-1] = temp;
            }
        }
    }
    for(int n = 0;n < len;n++){
        printf("num[%i] = %i\n",n,num[n]);
    }
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读