码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-04-17 00:16:56      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:--   定义   string   can   test   sys   scanner   tac   集合   

前言:

在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法。

有插入算法,删除算法,冒泡排序算法等。

在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识。

数组的基本知识:

数组的定义:数组(Array)是相同数据类型的数据的有序集合

数组是引用数据类型。

数组的三个特点:

[1]数组长度确定。数组一旦申请完空间长度不能发生变化,用length属性访问

[2]数组元素都是同一数据类型。

[3]数组是有序的 。每个元素通过下标/索引标记,索引0开始

关于内存的空间的一些知识:

 

内存分为两类:

 

 

(stack)内存:基本数据类型分配在栈内存,栈内存空间不需要开发者回收,系统会自动回收。空间占整个内存空间的比例较小。

 

 

(heap)内存:引用数据类型分配在堆内存,堆内存一定要开发者通过new 申请开发者申请的内存使用完成后一定要回收。jvm中有专门的垃圾回收机制(gc)回收使用完的堆内存。空间占整个内存空间的比例较大。

数组的几种声明方法:

例如

(1)int[] arr = new int[5];

   arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
        arr[3] = 40;
        arr[4] = 50;

 ( 2 ) int[] arr2;
        arr2 = new int[]{10,20,30,30,50};

(3)int[] arr2 = {10,20,30,40,50};

数组的算法:

(1)插入算法:一个数组有序,添加一个元素后,数组依然有序。

代码如下:

import java.util.Scanner;

public class Test05{
    public static void main(String[] args){
        //一个数组有序,添加一个元素后,数组依然有序。
        int[] arr = {1,3,7,9,10,13,0};
        
        Scanner input = new Scanner(System.in);
        System.out.println("请添加一个数:");
        int t = input.nextInt();
        //int t = 8;
        //(1)找出位置
        int loc = -1;
        for(int i = 0;i < arr.length-1;i++){
            if(arr[i] > t){
                loc = i;
                break;
            }
        }
        System.out.println("loc=" + loc );
        //(2)调t的位置
        if(loc < 0){           //t在最后一位
            arr[arr.length-1] = t;
        }else{                         //将loc后面几位数往后移动
            for(int j = arr.length-1;j>loc;j--){
                arr[j]=arr[j-1];
            }
            //将t放进去
            arr[loc] = t;
        }
        //检验,遍历数组
        for(int i = 0;i < arr.length;i++){
            System.out.print(arr[i]+ "\t");
        }          
    }
}

(2)删除算法:一个有序的数组,删除一个元素后依然有序。

代码如下:

import java.util.Scanner;
public class Test06{
    public static void main(String[] args){
        
        //一个有序的数组,删除一个元素后依然有序。
        int[] arr = {1,3,5,7,9,10,17,23};
        
        //删除t
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要删除的数:");
        int t = input.nextInt();
        //int t = 3;
        
        //(1)找出要删除的数的位置
        int loc = -1;
        for(int i = 0;i < arr.length;i++){
            if(arr[i] == t){
                loc = i;
                break;
            }
        }
        
        //(2)移动元素
        if(loc < 0){
            System.out.println(t+"不在数组中");
        }else{
            for(int j = loc;j < arr.length-1;j++){
                arr[j] = arr[j+1];
            }
        }
        //最后一个元素置0
        arr[arr.length-1] = 0;
        //检验,遍历数组
        for(int i = 0;i < arr.length;i++){
            System.out.print(arr[i] + "\t");
        }
    }
}

 

(3)冒泡排序算法:将一个无序的数组排序

 

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

标签:--   定义   string   can   test   sys   scanner   tac   集合   

原文地址:https://www.cnblogs.com/qq308015824/p/10720997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!