数组常用算法举例加解释(第一篇)

 一,插入算法

一个数组有序,在添加一个元素后,求数组依然有序

//先定义一个数组(如要添加元素,咱们得在元素末尾空出来一个预备位0),顺便定义要加入的元素t
        int []a=new int[]{1,3,7,9,12,20,0};
        int t=8;
        //首先咱们得找到该元素 的位置排在第几位:让t和数组中的每一个元素 依次 参与比较 直到遇到恰好比他大的那个元素
        int loc=-1; //表示t应该在的位置
        for(int i=0; i<a.length-1;i++){
            if(a[]>=t){
                loc=i;
                break;
            }
        }
        //如果没找到合适位置
        if(loc<0){
            a[a.length-1]=t;
        }else{    //其它元素依次后移
            for(int j=0; j<a.length-1;j--){
                a[j]=a[j-1];
            }

           //添加插入的值

        a[loc] = t;
        }

for(int i = 0;i<arr.length;i++){     //验证

System.out.print(arr[i]+"\t");

}

二,删除算法

          一个有序的数组,删除一个元素后依然有序

int []a={1,3,7,9,12,20};
    int t=1;
       //1,找位置
       int loc=-1;
       for(int i=0;i<a.length;i++){
           if(a[i]=t){
               loc=i;
                break;
           }
       }
       //2,移动元素
       if(loc<o){
           System.out.println("输入的数在数组中不存在");
       }else{
           for(int j=loc;j<a.length-1;j--){
               a[j]=a[j+1];
           }
           //最后一个元素置0
           a[a.length-1]=0;
       }
           //验证输出
           for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
           }

*个人觉得比插入算法简单些。。。

三,冒泡算法

该算法特点:需要将数组内元素两两对比

// 对一个无序的数组进行排序

int[] arr = {10,5,3,4,2,9,7};

int tmp = 0;

for(int i=0;i<arr.length-1;i++){ // 外层控制趟数

for(int j=0;j<arr.length-1-i;j++){ // 两两比较

if(arr[j]>arr[j+1]){

tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

}

}

for(int i=0;i<arr.length;i++){

System.out.print(arr[i]+"\t");

}

原文地址:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10720942.html

时间: 2024-08-29 13:06:50

数组常用算法举例加解释(第一篇)的相关文章

数组概念与基础以及数组常用算法

1.1.1 数组基础 数组(Array)是相同数据类型的数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素(item),每个数组元素可以通过一个下标/索引来(index)访问它们. 数组是引用数据类型. 数组的三个特点 [1]数组长度是确定.数组一旦申请完空间,长度不能发生变化,用length属性访问. [2]数组的元素都是同一数据类型. [3]数组是有序的 .每个元素通过下标/索引标记,索引从0开始. 1.1.2 内存空间分类(

数组中常用算法(方法)总结

1.堆栈 注意堆栈中的node需要暂存哪些数据,以及入口. 举例:二维数组中找到用相邻字母组成的目标字符串. Given board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] word = "ABCCED", -> returns true,word = "SEE", -> returns true,word = "ABCB", -> return

常用STL容器及算法举例

一 常用容器举例 1 vector: vector类似于动态数组,直接访问元素,从后面快速插入或者删除,示例代码如下: [cpp] view plaincopyprint? #include <iostream> #include <vector>//包含vector using namespace std;//指定命名空间 int main() { cout<<"----------vector test-----------"<<en

iOS开发中常用的轮子 第一篇

为避免重复造轮子,很多效果和功能都可以从github上找到.清点以前的项目,整理出了很多用过的开源代码,每天奉送10个. 第一篇  同色的代表是实现了同个功能,按自己需求挑选一个 项目名称 项目信息 1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一, AFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交

code第一部分数组:第十六题 数组表示数,加一操作

code第一部分数组:第十六题  数组表示数,加一操作 Given a number represented as an array of digits, plus one to the number. #include <iostream> #include <stdlib.h> #include <stdio.h> #include <vector> using namespace std; int * addone(int *a,int n) { in

第一篇博客——基于数组的优先队列(java版)

看过园子里和CSND上那么多大牛精彩的博客后,早就按捺不住想亲手写上几篇.奈何每次坐在电脑前准备敲字的时候,立马赶到浑身不自在,无从下手.实在是因为自高考之后,大学以来,本人几乎就再没动笔写过一篇文字,写作水平退化实在严重.今天鼓起勇气开始写作博客,一方面希望通过多写慢慢地找回写作的感觉,一方面也希望通过博客和大家多多交流,共同进步. 既然是第一次试手,就写个简单易懂的内容——优先队列. 话不多说,先上代码. 1 /** 2 * @author Mr Left 3 * @version 1.0

Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本知识: 数组的定义:数组(Array)是相同数据类型的数据的有序集合. 数组是引用数据类型. 数组的三个特点: [1]数组长度是确定.数组一旦申请完空间,长度不能发生变化,用length属性访问. [2]数组的元素都是同一数据类型. [3]数组是有序的 .每个元素通过下标/索引标记,索引从0开始.

Python之路,Day21 - 常用算法学习

Python之路,Day21 - 常用算法学习 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算

Python常用算法

本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一个算法的优劣可以用空间复杂度与时间复杂度来衡量. 一个算法应该具有以下七个重要的特征: ①有穷性(Fin