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

一、冒泡排序

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


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]);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容