c/c++快乐算法第三天

c/c++感受算法快乐(3)

开始时间2023-04-16 22:21:10

结束时间2023-04-17 00:09:34

前言:很好,这周就要结束了,大家都回学校了么,嘻嘻。回顾一下昨天的算法题,1.4抓交通肇事犯运用枚举模拟,1.5兔子产子问题运用迭代循环,1.6牛顿迭代法求方程根迭代循环,1.7最佳存款问题迭代循环。什么是迭代?对计算机特定程序中需要反复执行的子程序(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。快来看看今天的问题叭!

第一章 趣味算法入门

第八题 冒泡排序

一.问题描述

c/c++快乐算法第三天

 二.设计思路

  有输入,并且为自行输入的n个整数序列。这里我们需要用到冒泡排序,冒泡排序是什么?它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成,如同汽水中的气泡最终会冒到顶部一样顾名冒泡排序。冒泡排序总的平均时间复杂度为c/c++快乐算法第三天,冒泡排序是一种稳定排序算法。升序排列为数据从小到大排列。

c/c++快乐算法第三天

 三.流程图

c/c++快乐算法第三天

 四.源代码

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

 

五.运行结果

c/c++快乐算法第三天

 第九题 折半查找

一.问题描述

c/c++快乐算法第三天

 二.设计思路

  

c/c++快乐算法第三天

三.流程图

c/c++快乐算法第三天

 四.源代码

#include<stdio.h>
int main()
{
    int arr[]={3,4,10,13,33,42,46,63,76,78,95,96,120};
    int size=sizeof(arr)/sizeof(arr[0]);//数组的长度
    int x,middle;
    scanf("%d",&x);//输入要查找的数
    int left=0;
    int right=size;
    while(left<=right)//循环条件
    {
        middle=(left+right)/2;//中间数
        if(arr[middle]<x)
        {
            left=middle+1;//要查找的数在中间数的右边,左端加一即向右移,缩小范围
        }
        else if(arr[middle]>x)
        {
            right=middle-1;//要查找的数在中间数的左边,右端加一即向左移,缩小范围
        }
        else if(arr[middle]=x)//最后当中间数=要查找的数时查找完毕
        {
            printf("%d在arr[%d]\n位置:第%d个数",x,middle,middle+1);
            break;
        }
    }
    if(left>right)//当left>right时证明此范围内不存在要查找的数
        {
            printf("查无此数\n");
        }
        return 0;
}

 

五.运行结果

c/c++快乐算法第三天

 第十题 数值转换

一.问题描述

c/c++快乐算法第三天

 二.设计思路

c/c++快乐算法第三天

 

三.流程图

c/c++快乐算法第三天

 四.源代码

#include<iostream>
using namespace std;
#define Max 101 //限定数组最大长度
int char_to_num(char ch); //返回字符对应的数字
char num_to_char(int num); //返回数字对应的字符
long source_to_decimal(char temp[],int source);
//返回由原数转换成的十进制数
int decimal_to_object(char temp[],long decimal_num,int object);
//返回转换成目标进制的数组长度
void output(char temp[],int length); //将字符数组逆序输出
int main(){
int source; //存储原来的进制
int object; //存储目标进制
int length; //存储转化后的数组长度
long decimal_num; //存储转换成的十进制数
char temp[Max]; //存储待转化的数值 和转化后的数值
int flag=1; //是否结束程序
while(flag)
{
cout<<"转换前的数是:";
cin>>temp;
cout<<"转换前的进制是:";
cin>>source;
cout<<"转换后的进制是";
cin>>object;
cout<<"转换后的数值是:";
decimal_num=source_to_decimal(temp,source);
length=decimal_to_object(temp,decimal_num,object);
output(temp,length);
cout<<"继续请输入1,否则输入0";
cin>>flag;
}
}
int char_to_num(char ch)
{
if(ch>='0'&&ch<='9')
return ch-'0'; //0~9
else
return ch-'A'+10;//大于10的数字
}
char num_to_char(int num)
{
if(num>=0&&num<=9)
return (char)('0'+num-0);
else
return (char)('A'+num-10);
}
long source_to_decimal(char temp[],int source)
{
long decimal_num=0;
int length;
int i;
for(i=0;temp[i]!='\0';i++);
length=i;
for(i=0;i<length-1;i++)
decimal_num=(decimal_num*source)+char_to_num(temp[i]);
return decimal_num;
}
int decimal_to_object(char temp[],long decimal_num,int object)
{
int i=0;
while(decimal_num)
{
temp[i]=num_to_char(decimal_num%object);
decimal_num=decimal_num/object;
i++;
}
temp[i]='\0';
return i;
}
void output(char temp[],int length)
{
int i;
for(i=length-1;i>=0;i--)
cout<<temp[i];
cout<<endl;
}

 

五.运行结果

c/c++快乐算法第三天

 总结:恭喜你学完第一章趣味算法入门!不知你是在为新赛季的阴间队友而气出内伤,还是在为三千字职业生涯规划结课论文而默默流泪,总之明天就是周一,新的一周就要开始咯,冲哇冲哇!

每日一mo:Opportunity is missed by most people because it is dressed in overalls and looks like work. 

 

原文链接:https://www.cnblogs.com/R-f-12/p/17324542.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c/c++快乐算法第三天 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月17日

相关文章

  • 一文教你Qt如何操作SQLite数据库

    一文教你Qt如何操作SQLite数据库 1. 安装SQLite数据库驱动 在Qt中操作SQLite数据库,需要使用到SQLite数据库驱动。下面介绍如何安装和配置这个驱动。 1.1 下载SQLite 访问 SQLite官网 ,选择最新的预编译二进制文件下载。 1.2 下载SQLite驱动 访问Qt官网的下载页面,选择对应版本的Qt安装程序。这里以Qt 5.1…

    C 2023年5月22日
    00
  • Golang Gin框架实现多种数据格式返回结果详解

    Golang Gin框架是常用的Web框架之一,它提供了丰富的API和中间件,能够快速搭建Web服务,同时还支持多种数据格式的返回结果。下面是一份实现多种数据格式返回结果的攻略,包括JSON、XML、HTML和Plain Text格式的返回结果。 简介 首先,为了使用Gin框架,需要先安装Gin模块: go get -u github.com/gin-gon…

    C 2023年5月23日
    00
  • C++机房预约系统实现流程实例

    C++机房预约系统实现流程实例 本篇文章介绍如何使用C++实现一个机房预约系统。详细步骤如下: 1. 界面设计 首先,需要设计预约系统的界面。可以选择命令行界面和图形界面,这里选择命令行界面。 2. 系统功能 接下来,需要确定系统需要实现的功能。这里考虑以下几点: 订单管理:包括添加预约、取消预约和显示预约信息。 学生管理:包括添加学生、修改学生和删除学生。…

    C 2023年5月23日
    00
  • C语言 函数

    C语言 函数 使用攻略 什么是函数 在程序设计中,函数是一段可以重复使用的代码块。将一组操作封装在函数中,可以提高代码的可读性和可维护性,并有助于模块化程序设计。 在C语言中,函数由函数头和函数体组成。函数头包含函数名和参数列表,参数列表是一组可以传递给函数的值,函数体包含了具体的操作代码。 函数定义的语法如下: 返回值类型 函数名(参数列表) { // 函…

    C 2023年5月9日
    00
  • C语言简单实现银行ATM存取款功能

    C语言简单实现银行ATM存取款功能 简介 本攻略将介绍如何在C语言中实现简单的银行ATM存取款功能。ATM机器是银行中最为常见的一种自助服务设备,一般具有取款、存款、查询余额等功能。为了简化实现过程,我们只保留了取款和存款两个功能。本攻略的实现基于C语言,面向初学者,代码简单易懂,欢迎参考。 实现步骤 1. 声明变量 首先我们需要在程序开头声明两个变量,用于…

    C 2023年5月23日
    00
  • C/C++实现蛇形矩阵的示例代码

    首先,蛇形矩阵是一种特殊的矩阵形式,它的特点是按照顺时针或逆时针的方向依次填充数字,形成蛇形状的排列方式。实现蛇形矩阵的算法可以使用C/C++语言编写。 实现步骤 以下是使用C/C++语言实现蛇形矩阵的攻略: 首先确定矩阵的行数和列数,一般情况下矩阵行和列相等。接着定义一个二维数组来存储蛇形矩阵,例如: int a[10][10]; 然后定义两个变量row和…

    C 2023年5月24日
    00
  • C语言实现简易网络聊天室

    C语言实现简易网络聊天室攻略 1. 简介 在本文中,我们将介绍如何使用C语言实现一个简易的网络聊天室。最终的网络聊天室将包括客户端和服务器端两个部分。客户端可以通过与服务器相连进行多人聊天,服务器将转发客户端发送的消息到其它客户端。 2. 前期准备 在开始编写代码之前,我们需要进行如下准备工作: 2.1 编程环境 C语言是一门编译型语言,因此我们需要准备好C…

    C 2023年5月23日
    00
  • IP地址的分类 abcde类是如何划分的

    IP地址是计算机在网络上的标识,可以用来唯一定位到某个设备。IP地址按照网络的规模和需求,被分成了不同类别,分别为A、B、C、D、E五类。其中A、B、C三类用的最为广泛。 IP地址分类 IP地址根据网络规模的不同,可分为五类,如下: A类地址:以0开头,1-126的数字段,用于大型网络; B类地址:以10开头,128-191的数字段,用于中型网络; C类地址…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部