函数重载,数组,一些算法

函数:

函数的作用: 将一个功能代码封装起来,已达到功能代码被复用。

函数 的定义格式:

修饰符 返回值类型 函数名(形参列表){
函数体;

}

函数的特点和注意的细节:

1. 函数就是将一个功能代码封装起来,已达到功能代码可以被复用起来的效果。
2. 如果一个函数没有返回值,那么函数 的返回值类型要使用void表示,
3. 函数定义好之后,需要被调用才会执行。 main函数是由jvm调用,不需要我们手动调用的。
4. 一个 函数可以被重复调用多次。
5. 如果一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字后面不能跟有数据。

函数的重载: 在一个类中存在两个或者两个以上的同名函数称作为函数的重载。

函数重载的作用: 可以使用一个函数名定义多个函数,以应对不同类型的参数。

函数重载的要求:

1. 函数名要一致。
2. 形参列表不一致。(形参的个数不一致或者是形参对应的类型不一致)
3. 函数重载与返回值类型无关。

数组: 数组就是存储同一种类型数据 的集合 容器。

数组的特点:

1. 数组只能存储同一种数据类型的数据。
2. 数组一旦初始化,长度固定。
3. 在一个数组中元素与元素之间的内存地址是连续 的。

数组的初始化方式:

动态初始化

数据类型[] 变量名 = new 数据类型[长度];

静态初始化
数据类型[] 变量名= {元素1,元素2,元素3 ....};

数组常见的问题:

第一种: 空指针异常。
原因: 引用类型变量没有指向任何的对象,而使用了对象的功能或者是访问了对象的属性。

第二种: 角标越界异常
原因: 访问了不存在的索引值。

数组常见的操作:

需求2: 定义一个函数接收一个数组对象,然后把数组中最大值放在第一位。 其他元素不能丢失,顺序无所谓。

class Demo6
{
    public static void main(String[] args)
    {
        int[] arr = {13,11,17,4,19};
        //int max = getMax(arr);
        //System.out.println("最大值:"+ max);
        changeMax(arr);

    }

    //需求:把最大值放在第0位
    public static void  changeMax(int[] arr){
        for(int i = 1 ; i<arr.length ; i++){
            if(arr[0]<arr[i]){
                int temp  = arr[i];
                arr[i] = arr[0];
                 arr[0] = temp;
            }
        }

        //遍历数组元素,查看效果
        for(int i  = 0 ; i< arr.length ; i++){
            System.out.print(arr[i]+",");
        }
    }

    //需求1: 定义一个函数接收一个数组对象,然后找出数组对象中的最大值返回。
    public static  int getMax(int[] arr){
        int max = arr[0] ;     //定义一个变量记录最大值
        for(int i = 1; i < arr.length ; i++){
            if(arr[i]>max){  //如果发现有元素比max大,那么max则记录当前的元素。
                max = arr[i];
            }
        }
        return max;
    }
}

需求:数组元素反转(就是把元素对调)

public class Demo01 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //数组元素反转(就是把元素对调)

        int[] arr = {120,119,110,528,520,99,23};
        //{520,528,110,119,120};

        //1.算下对调次数
        int count = arr.length / 2;

        //2.打印对调的索引
        for(int i = 0; i < count; i++){
            int left = i;//左边索引
            int right = arr.length - i - 1;//右边索引
            System.out.println("左边的索引:" + left + " 右边的索引:" + right);

            //把左边的值赋值给临时变量
            int tmp = arr[left];
            //把右边的值赋值给左边
            arr[left] = arr[right];
            //把临时变量赋值给右边
            arr[right] = tmp;
        }

        //3.遍历
        for(int i = 0;i < arr.length; i++){
            System.out.println(arr[i]);
        }

    }

}

需求: 定义一个函数接收一个数组与一个要查找的元素,然后返回元素在数组中的索引值。如果不存在
返回-1表示。

二分法(折半查找法): 折半查找法只适用于有序的数组。

原文地址:https://www.cnblogs.com/hbxZJ/p/10543779.html

时间: 2024-08-30 03:14:56

函数重载,数组,一些算法的相关文章

C++的函数重载(转)

函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题 1.声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了) 2.当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢) 这两个问题是任何支持函数重载的语言都必须要解决的问题!带着这两个问题,我们开始本文的探讨.本文的主

C++关键字、命名空间、函数重载、缺省参数、内联函数、引用

一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值nullptr&nullptr_t 二. 正文 1.C++关键字(C++98) C++98中的关键字总共用63个,如下表: 在这这做简单介绍,感兴趣的朋友可以参考相关资料作进一步了解. 2.命名空间 由于在编写程序的过程中,很容易出现变量.函数和类重名的现象,这些变量.函数和类都在全局作用域中,因此会导致很多

实验2:函数重载、函数模板、简单类的定义和实现

实验目的 1. 掌握c++中函数的声明.定义.调用和参数传递方式 2. 掌握c++中带有默认形参值的函数声明和定义方法 3. 理解函数重载,掌握c++中函数重载的实现方式 4. 理解函数模板,掌握c++中函数模板的简单使用 5. 理解面向对象的抽象和封装,掌握c++中类的定义.实现和使用方法 实验准备 1. 函数的声明.定义.调用.参数传递方法 2. 带有默认形参值的函数 3. 函数重载 4. 函数模板(9.1.1节 + 9.3节) 其中,9.3节,理解3个常用的排序算法和两个常用的查找算法 5

C语言中函数指针数组浅析

发现问题 问题分析 示例代码 发现问题 今天,在阅读Linux内核中关于socket的源代码时,遇到了下面一段代码: struct proto_ops { int family; struct module *owner; int (*release) (struct socket *sock); int (*bind) (struct socket *sock, struct sockaddr *myaddr, int sockaddr_len); int (*connect) (struct

PHP移动互联网开发笔记(4)——自定义函数及数组

原文地址:http://www.php100.com/html/php/rumen/2014/0326/6705.html 一.自定义函数 自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return values; } view source print? 01.<?php  02.function fun($m, $n){  03.if($m==0 || $n==0){  04

C++ 函数重载与函数匹配

<C++ Primer>笔记,整理关于函数重载与函数匹配的笔记. 函数重载 void func(int a); //原函数 void func(double a); //正确:形参类型不同 void func(int a, int b); // 正确:形参个数不同 int func(int a); //错误:只有返回类型不同 typedef int int32; void func(int32 a); //与原函数等价:形参类型相同 void func(const int a); //与原函数

《JS权威指南学习总结--8.8 函数式编程和8.8.1使用函数处理数组》

内容要点:    和Lisp.Haskell不同,JS并非函数式编程语言,但在JS中可以像操控对象一样操控函数,   也就是说可以在JS中应用函数式编程技术.ES5中的数组方法(诸如map()和reduce())就可以非常适用于函数式编程风格. 一.使用函数处理数组    假设有一个数组,数组元素都是数字,我们想要计算这些元素的平均值和标准差.    若用非函数式编程风格的话,代码是这样:         var data = [1,1,3,5,5]; //这里是待处理的数组        //

函数指针与函数指针数组的使用方法

转自:http://blog.csdn.net/feitianxuxue/article/details/7300291 函数指针与函数指针数组的使用方法 函数指针: 函数指针包含函数在内存中的地址.数组名实际上就是数组的第一个元素在内存中的地址,类似地,函数名实际上也是执行这个函数任务的代码在内存中的起始地址. 函数指针可以传递给函数.从函数返回.保存在数组中.赋予另一个函数指针或者调用底层函数. 下面我们用数值算法accumulate讨论下函数指针的用法.accumulate是一种常用的ST

C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针

 目  录 1       开始学习C++.............................................................................................................. 4 1.1       C++的头文件.................................................................................................