三种常见的数据排列

刚开始的时候也听过学长说什么什么排序之类的,到刚听得时候是各种姿势懵逼啊,学习了一段时间的c语言之后,才有点明白所谓的排序是什么,现在就来罗列一下三种常用的排序法冒泡排序法,插入排序法和选择排序法。

冒泡排序

冒泡排序啊,这是我听过最多的一个排序方法了,他的基本思想也比较简单,就是不断比较相邻的两个数,让较小的元素不断地往后移。经过一轮比较,就选出最小的数(降续),然后放在这次排列的最后一位;然后在进行下一次的重复动作,不过不动上次已经放好的数,减少一次比较,再找出这一轮最小的数,放在这一轮的最后面,然后依次循环,这就得到一个降续的排列了。
#include <stdio.h>
#define numb 20
int main()
{
int num[numb],i,j,t;
for (i = 0; i < numb; ++i)
num[i] = rand();
for ( i = 0; i <numb-1; ++i)
{

  for (j= 0; j< numb-1-i; ++j)
    {
        if(num[j]<num[j+1])
        {   t=num[j];
            num[j]=num[j+1];
            num[j+1]=t;
        }
    }
}
 for ( i = 0; i < numb; ++i)
 {
    printf("%d\n",num[i]);/* code */
 }

 return 0;
}

这是一个示例输出

Paste_Image.png

插入排序法

插入排序法是一种非常快速的排序算法,且原理简单,结构紧凑。它的是原理:从序列中第二个数A开始,将A,插入前面已经排好的序列中,形成一个新的排序好的序列,以此类推到最后一个元素。
#include <stdio.h>
#define N 7
int main()
{
int a[N]={1,4,5,8,7,2,9};
int i,t,p;
for (i =1; i < N; ++i)
{
t=a[i];
p=i-1;
while(p>=0 && t<a[p])
{
a[p+1]=a[p];
p--;
}
a[p+1]=t;
}
for ( i = 0; i < N; ++i)
{
printf("%d\n",a[i]);/* code */
}
}
图来了,

Paste_Image.png

选择排序法

选择排序法也可以看做冒泡的一个改进,经过一轮的两两比较后,并不马上交换数的位置,而是找到本轮最小的数,记下该数的位置(即在数组中的下标),待本轮比较完毕后,通过一次交换即可将本轮最小的数交换到位。然后就找到把数字排好了。
#include <stdio.h>
#define N 10
int main()
{
int a[N]={1,23,34,55,4,6,9,45,98,5},i,j,k,temp;
for(i=0;i<9;i++)
{ k=i;
for(j=k+1;j<10;j++)
{
if(a[k]<a[j])
k=j;
}
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for ( i = 0; i < N; ++i)
{
printf("%d\n",a[i]);/* code */
}
}

附图

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。常见的...
    LeeLom阅读 98,291评论 41 662
  • 一、 单项选择题(共71题) 对n个元素的序列进行冒泡排序时,最少的比较次数是( )。A. n ...
    貝影阅读 9,400评论 0 10
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,287评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,805评论 0 15
  • 12号和15号 我阳历生日和阴历生日都要值班 我操
    一颗小鸡蛋阅读 192评论 0 0

友情链接更多精彩内容