ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第六周学习总结

2021-10-31 16:33:52  阅读:154  来源: 互联网

标签:总结 学习 int 元素 个数 第六周 冒泡 数组 排序


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

二、选择法排序

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

第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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有