其他分享
首页 > 其他分享> > 第六周学习总结

第六周学习总结

作者:互联网

一、本周主要学习了一维数组的相关知识,并初步了解了选择法排序,二分法,冒泡排序。

二、选择法排序

选择排序的算法步骤如下:

第0步:在未排序的n个数(a[0]〜 a[n−1])中找到最大数,将它与 a[0]交换;

第1步:在剩下未排序的n−1个数(a[1] 〜 a[n−1])中找到最大数,将它与 a[1] 交换;

……

第k步:在剩下未排序的n−k个数(a[k]〜a[n−1])中找到最大数,将它与 a[k] 交换;

 

例:要求将给定的n个整数从大到小排序后输出

#include<stdio.h>
int main()
{
    int n, a[10], i, j, t;
    scanf("%d", &n);
    for(i=0;i<n;i++)
    {
        scanf("%d", &a[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=i;j<n;j++)
        {
            if(a[i]<a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    printf("%d", a[0]);
    for(i=1;i<n;i++)
        printf(" %d", a[i]);
}

三、冒泡排序

冒泡排序的算法步骤描述如下:

第1步:在未排序的n个数(a[0]〜 a[n−1])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,数组中的最大元素“冒泡”到a[n−1];

第2步:在剩下未排序的n−1个数(a[0] 〜 a[n−2])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−2]中的最大元素“冒泡”到a[n−2];

……

第i步:在剩下未排序的n−k个数(a[0]〜a[n−i])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−i]中的最大元素“冒泡”到a[n−i];

例:将一组数从小到大排序

#include<stdio.h>
int main ()
{
    int a[10],n,i,j,temp;
    scanf("%d\n",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    if(n==1)
    {
        printf("%d",a[0]);
    }
    for(j=0;j<n-1;j++)
    {
        for(i=0;i<n-1-j;i++)
        {
            if(a[i]>a[i+1])
           {
            temp=a[i+1];
            a[i+1]=a[i];
            a[i]=temp;
           }
        }
    }
    for(i=0;i<n;i++)
        {
            if(i==0)
              printf("%d",a[i]);
            else
              printf(" %d",a[i]);
            if(i==n-1)
              printf("\n");
        }
}

三、两个算法比较

冒泡简单但时间长。

选择法一次只比较两个数,效率低。

四、二维数组

本周还自主学习了二维数组。

我们可以把二维数组看作线代里的矩阵,要注意观察各坐标之间的关系,行列关系等等

 

标签:总结,学习,int,元素,个数,第六周,冒泡,数组,排序
来源: https://www.cnblogs.com/gyh-0-2-1-8-/p/15489876.html