zoukankan      html  css  js  c++  java
  • Java数据结构和算法的数组

        阵列的功能:

        1、固定大小

        2、相同的数据类型

        3、

        4、数据项可反复

        Java数据类型:基本类型(int和double)和对象类型。在很多编程语言中。数组也是基本类型。但在Java中把它们当作对象来对待。因此在创建数组时必须使用new操作符。

        有序数组与无序数组比較:最基本的优点是查找速度比无序数组快多了。不好的方面是在插入操作中由于全部靠后的数据都须要移动以疼开空间。所以速度较慢。

    有序数组和无序数组数据中的删除操作都非常慢,这是由于数据项必须向前移动来填补已删除数据项的空洞。

        数据訪问:从下标訪问,能够理解为位置訪问,这一点主要说明与链表的关系訪问的不同。

        数组中有无反复值对数组操作的影响:

     

        二分查找和线性查找:

        线性查找。

        在一列给定的值中进行搜索,从一端開始逐一检查每一个元素,直到找到所需元素的过程。

        假设查找池是某种类型的表,比方一个数组,简单的查找方法是从表头開始,一次将每个值与目标元素相比較,最后,或者查找到目标。或者达到表尾。而目标不存在于组中,这种方法成为线性查找。

        线性查找又称为顺序查找。

    
    
    public class LSearch {
    	public static int[] Data = { 12, 76, 29, 22, 15, 62, 29, 58, 35, 67, 58,
    			33, 28, 89, 90, 28, 64, 48, 20, 77 }; // 输入数据数组
    
    
    	public static int Counter = 1; // 查找次数计数变量
    
    
    	public static void main(String args[]) {
    
    
    		int KeyValue = 22;
    		// 调用线性查找
    		if (Linear_Search((int) KeyValue)) {
    			// 输出查找次数
    			System.out.println("");
    			System.out.println("Search Time = " + (int) Counter);
    		} else {
    			// 输出没有找到数据
    			System.out.println("");
    			System.out.println("No Found!!");
    		}
    
    
    	}
    	public static boolean Linear_Search(int Key) {
    		int i; // 数据索引计数变量
    
    
    		for (i = 0; i < 20; i++) {
    			// 输出数据
    			System.out.print("[" + (int) Data[i] + "]");
    			// 查找到数据时
    			if ((int) Key == (int) Data[i])
    				return true; // 传回true
    			Counter++; // 计数器递增
    		}
    		return false; // 传回false
    	}
    }

        二分查找(折半查找)。

        几个特点:

        1、必须採用顺序存储结构

        2、必须按keyword大小有序排列

        3、数据量越大,效率体现的越明显

    	/**
    	 * 二分查找法 demo
    	 */
    	public int find(){
    		a [0] = 22; 
    		a [1] = 33; 
    		a [2] = 88; 
    		a [3] = 43; 
    		a [4] = 74; 
    		a [5] = 34; 
    		a [6] =63; 
    		a [7] = 32; 
    		a [8] = 26; 
    		a [9] = 92; 
    		int lowerBound = 0;
    		int upperBound = 9;
    		int curIn = 0;
    		long searchKey = 63;
    		while (true) {
    			
    			curIn = (lowerBound+upperBound)/2;
    			
    			if (a[curIn]==searchKey) {
    				
    				return curIn;
    				
    			}
    			else if (lowerBound>upperBound) {
    				
    				return 10;
    				
    			}else {
    				
    				if (a[curIn]<searchKey) {
    					
    					lowerBound  = curIn+1;
    					
    				}else {
    					
    					upperBound  = curIn-1;
    					
    				}
    			}
    		}
    	}

        大O表示法

        汽车按尺寸被分为若干类,微型、中型、大型等等。相同,我们也须要一个快捷的方法来评价计算机算法的效率,在计算机科学中,这样的粗略的度量方法被称作“大O”表示法。

        

        

        

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    ORACLE触发器具体解释
    秒杀多线程第四篇 一个经典的多线程同步问题
    Java中Integer类的方法
    九大排序算法再总结
    删除条目时的确认对话框
    VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
    J2EE之验证码实现
    教你用笔记本破解无线路由器password
    vSphere HA状况:未知配置错误解决的方法
    HDU 2504 又见GCD
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4654542.html
Copyright © 2011-2022 走看看