美文网首页
新鲜出炉的排序算法,快来围观吧!

新鲜出炉的排序算法,快来围观吧!

作者: 一达达一 | 来源:发表于2019-05-14 22:10 被阅读0次

    一、冒泡排序

    这是所有排序算法里面最简单的最基础的。它的核心思想是,相邻列逆序交换。他有三个特点,最容易实现、最具稳定性、数量很多的数,效率低。

    int main()

    {int i,j,n,t,flag;

    int a[10];

    scanf("%d",&n);

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    for(i=0;i<n-1;i++)

    {flag=1; /*用于检验是否已排序完成*/

    for(j=0;j<n-1-i;j++)

      {if(a[j]>a[j+1])

      {t=a[j];

      a[j]=a[j+1];

      a[j+1]=t;

      flag=0;

      }

      }

    if(flag=1)

      break;

    }

    for(i=0;i<n;i++)

    printf("%d ",a[i]);

    }

    二、选择排序

    这也是一种简单直观的排序算法。它的核心思想是,如果从小到大排列的话,先找出最小的一个,再找到第二小的,然后再找到第三小的,,,依次放在前面,从大到小的,反之。它的特点是,较容易实现,不具稳定性,较好的效率。

    #include <stdio.h>

    int main()

    {int i,j,k,n,t;

    int a[20]={0};

    scanf("%d",&n);

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    for(i=0;i<n-1;i++)

    {k=i;

    for(j=i+1;j<n;j++)

    {if(a[k]>a[j])

    k=j;

    }      //与后面的逐一比较,找出最值

    if(k!=i)  //判断现在的k是否发生变化 

    {t=a[k];

    a[k]=a[i];

    a[i]=t;

    }

    }

    for(i=0;i<n;i++)

    printf("%d ",a[i]);

    三、插入排序

    这是一种较前两种更复杂的排序算法,它的核心思想是第一个元素已被排序,取出下一个元素,在已排序的数中插入。他不是适用于数据量比较大的排序,对于小的比较合适,广泛用于工业排序。

    #include <stdio.h>

    int main()

    {int i,j,k,m,n,t,cha;

    int a[20];

    scanf("%d",&n);

    for(i=0;i<n;i++)

      scanf("%d",&a[i]);

    for(i=0;i<n-1;i++)

    {m=i+1;

    for(j=0;j<=i;j++)

    {if(a[m]<a[j])

    {cha=a[m];/*找出合适的位置*/

    for(k=m;k>j;k--)

    a[k]=a[k-1];/*腾出空位*/

    a[j]=cha;/*插入其中*/

    break;/*跳出循环,否则还有其他较大的数*/

    }

    }

    }

    for(i=0;i<n;i++)

      printf("%d ",a[i]);

    }

    相关文章

      网友评论

          本文标题:新鲜出炉的排序算法,快来围观吧!

          本文链接:https://www.haomeiwen.com/subject/sudyaqtx.html