美文网首页CreatShare
三种常见的数据排列

三种常见的数据排列

作者: 花不休 | 来源:发表于2016-12-22 18:44 被阅读88次

    刚开始的时候也听过学长说什么什么排序之类的,到刚听得时候是各种姿势懵逼啊,学习了一段时间的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

    相关文章

      网友评论

        本文标题:三种常见的数据排列

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