`
linzhanghui
  • 浏览: 46296 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

常用算法 Java语言描述

    博客分类:
  • Java
阅读更多
package com.linzhanghui.algorithm;

//二分法

public class OrdArray {
	private long[] a;
	private int nElems;
	
	public OrdArray(int max) {
		a = new long[max];
		nElems = 0;
	}
	
	public int size(){
		return nElems;
	}
	
	public int find(long searchKey) {
		int lowerBound = 0;
		int upperBound = nElems - 1;
		int curIn;
		while (true) {
			curIn = (lowerBound + upperBound) / 2;
			if(a[curIn] == searchKey)
				return curIn;
			else if(lowerBound > upperBound)
				return nElems;
			else {
				if(a[curIn] < searchKey)
					lowerBound = curIn + 1;
				else
					upperBound = curIn - 1;
			}
		}
	}
	
	public void insert(long value) {
		int j;
		for(j=0; j<nElems; j++)
			if(a[j] > value)
				break;
		for(int k=nElems; k>j; k--)
			a[k] = a[k-1];
		a[j] = value;
		nElems++;
	}
	
	public boolean delete(long value) {
		int j = find(value);
		if(j == nElems)
			return false;
		else {
			for(int k=j; k<nElems; k++)
				a[k] = a[k+1];
			nElems--;
			return true;
		}
	}
	public void display() {
		for(int j=0; j<nElems; j++)
			System.out.print(a[j] + " ");
		System.out.println(" ");
	}
}



package com.linzhanghui.algorithm;

public class OrderedApp {
	public static void main(String[] args) {
		int maxSize = 100;
		OrdArray arr = new OrdArray(maxSize);
		arr.insert(77);
		arr.insert(99);
		arr.insert(44);
		arr.insert(55);
		arr.insert(22);
		arr.insert(88);
		arr.insert(11);
		arr.insert(00);
		arr.insert(66);
		arr.insert(33);
		
		int searchKey = 55;
		if(arr.find(searchKey) != arr.size())
			System.out.println("找到" + searchKey);
		else
			System.out.println("找不到" + searchKey);
		
		arr.display();
		arr.delete(00);
		arr.delete(55);
		arr.delete(99);
		
		arr.display();
		
		
	}
}
package com.linzhanghui.algorithm;

/*
 * 冒泡排序,时间复杂度O(n^2)
 * 简单描述:
 * 			两两比较,比较出最大的一个数放在最后位置
 * 			剩下的继续比较
 * 
 */

public class ArrayBub {
	private long[] a;
	private int nElems;
	
	public ArrayBub(int max) {
		a = new long[max];
		nElems = 0;
	}
	
	public void insert(long value) {
		a[nElems] = value;
		nElems++;
	}
	
	public void display() {
		for(int j=0; j<nElems; j++)
			System.out.print(a[j] + " ");
		System.out.println("");
	}
	
	public void bubbleSort() {
		int out, in;
		for(out=nElems-1; out>1; out--)
			for(in=0;in<out;in++)
				if(a[in] > a[in+1])
					swap(in, in+1);
		
	}
	
	private void swap(int one,int two) {
		long temp = a[one];
		a[one] = a[two];
		a[two] = temp;		
	}
	
}


package com.linzhanghui.algorithm;

public class BubbleSortApp {
	public static void main(String[] args) {
		int maxSize = 100;
		ArrayBub arr = new ArrayBub(maxSize);
		
		arr.insert(77);
		arr.insert(99);
		arr.insert(44);
		arr.insert(55);
		arr.insert(22);
		arr.insert(88);
		arr.insert(11);
		arr.insert(00);
		arr.insert(66);
		arr.insert(33);
		
		arr.display();
		arr.bubbleSort();
		arr.display();
	}
}


  

package com.linzhanghui.algorithm;

/*随机生成1000个数字,并归并快速排序;
*/
public class ArrayIns {
	private long[] theArray;
	private int nElems;
	
	public ArrayIns(int max) {
		theArray = new long[max];
		nElems = 0;
	}
	
	public void insert(long value) {
		theArray[nElems] = value;
		nElems++;
	}
	
	public void display() {
		System.out.print("A=");
		for(int j=0; j<nElems; j++)
			System.out.print(theArray[j] + " ");
		System.out.println("");
	}
	
	public void quickSort() {
		recQuickSort(0, nElems-1);
	}
	
	public void recQuickSort(int left, int right) {
		if(right-left <= 0)
			return;
		else {
			long pivot = theArray[right];
			
			int partition = partitionIt(left, right, pivot);
			recQuickSort(left, partition-1);
			recQuickSort(partition+1, right);
		}
	}
	
	public int partitionIt(int left, int right, long pivot) {
		int leftPtr = left-1;
		int rightPtr = right;
		while(true) {
			while(theArray[++leftPtr] < pivot);
			while(rightPtr > 0 && theArray[--rightPtr] > pivot );
			if(leftPtr >= rightPtr)
				break;
			else
				swap(leftPtr, rightPtr);
		}
		swap(leftPtr, right);
		return leftPtr;
	}
	
	public void swap(int dex1, int dex2) {
		long temp = theArray[dex1];
		theArray[dex1] = theArray[dex2];
		theArray[dex2] = temp;
	}
}


package com.linzhanghui.algorithm;

public class QuickSort1App {
	public static void main(String[] args) {
		int maxSize = 1000;
		ArrayIns arr = new ArrayIns(maxSize);
		
		for(int j=0; j<maxSize; j++) {
			long n = (int)(java.lang.Math.random()*999);
			arr.insert(n);
		}
		arr.display();
		arr.quickSort();
		arr.display();
	}
}

 

分享到:
评论

相关推荐

    数据结构与算法Java语言描述(源代码)

    本资源提供了"数据结构与算法Java语言描述(源代码)",帮助学习者通过实际代码深入理解这些概念。 1. **数组**:数组是最基本的数据结构,它允许存储固定数量的相同类型元素。在Java中,数组可以是一维、二维或...

    数据结构与算法Java语言描述 部分代码实现

    本资源提供了"数据结构与算法Java语言描述 第二版 部分代码实现",这意味着你将能够学习到如何使用Java来实现各种数据结构和算法。 1. **数组**:数组是最基本的数据结构,它允许存储固定大小的同类型元素集合。在...

    Java语言描述(算法)

    本资源“Java语言描述(算法)”旨在深入解析Java语言中的算法实现,帮助读者提升编程技巧和解决问题的能力。 目录通常会包含以下部分: 1. **基础篇**:涵盖Java语言的基础语法,如变量、数据类型、运算符、控制...

    数据结构与算法--Java语言描述

    在这个“数据结构与算法--Java语言描述”的资料中,我们有望深入理解这些核心概念,并通过Java语言来实现它们,从而提升编程技能。 数据结构是组织和存储数据的方式,它决定了数据的访问效率和操作复杂性。常见的...

    数据结构与算法分析(java语言描述)中文第二版以及习题答案

    本资源包含两本书——《数据结构与算法分析(Java语言描述)》的中文第二版以及对应的习题答案,无论是英文还是中文版本,都是Java开发者深入理解这一领域的宝贵资料。 《数据结构与算法分析》一书,作者通常会详细...

    数据结构和算法JAVA语言描述

    《数据结构和算法JAVA语言描述》是一本专为学习数据结构和算法的读者精心编写的教材,由三峡大学理学院的周鹏教授撰写。这本书深入浅出地介绍了数据结构和算法的基本概念,以及如何用JAVA这门强大的编程语言来实现...

    数据结构与算法经典问题解析 java语言描述 原书第二版

    《数据结构与算法经典问题解析 Java语言描述》第二版是一本深入探讨计算机科学核心领域的书籍,专注于使用Java语言来阐述和解决数据结构和算法的问题。这本书对于任何希望在IT行业中提升自身技能,尤其是软件开发...

    《数据结构与算法》Java语言描述源代码

    这些知识点在《数据结构与算法》Java语言描述源代码中应该都有相应的实现,通过阅读和实践这些源代码,可以加深对数据结构和算法的理解,提高编程能力。同时,理解这些概念对于解决实际问题和开发高性能的软件系统至...

    数据结构与算法 JAVA 语言描述

    ### 数据结构与算法 JAVA 语言描述 #### 一、Java与面向对象程序设计 在《数据结构与算法 JAVA 版》这本书中,第一章主要介绍了Java编程语言的基础知识以及其面向对象的特点。 - **1.1 Java语言基础知识** - **...

    数字图像处理 java 语言描述

    本篇文章将深入探讨Java语言在数字图像处理中的应用,并基于“数字图像处理:Java语言算法描述”这一主题展开讨论。 首先,我们要理解数字图像的基本概念。数字图像是一种以数字形式表示的图像,由像素阵列组成,每...

    数字图像处理Java语言算法描述 源码

    "数字图像处理Java语言算法描述 源码"包含了一系列用于处理图像的Java程序,它们实现了从基础的图像变换到复杂的图像分析算法。通过阅读和运行这些源码,开发者可以学习到如何用Java来操作像素矩阵、颜色空间转换、...

    实用数据结构教程_Java语言描述.zip

    本教程“实用数据结构教程_Java语言描述”涵盖了这个主题,旨在帮助学习者深入理解和应用Java中的数据结构。 1. 数组:数组是最基本的数据结构,它允许存储固定大小的同类型元素序列。在Java中,数组可以是一维、二...

    数据结构与算法答案——java语言描述

    本资料集是“数据结构与算法答案——java语言描述”,虽然全为英文内容,但其深入探讨了使用Java实现数据结构和算法的细节。 1. **数组**:数组是最基本的数据结构之一,它是一系列相同类型元素的集合,可以通过索...

    数据结构与问题求解——java语言描述 源码

    本资料集是基于Java语言的实现,由著名计算机科学家Mark Allen Weiss所著的《数据结构与问题求解——java语言描述》(第三版)的源码。该书通过丰富的实例和深入的理论讲解,帮助读者理解和掌握各种经典的数据结构...

    实用数据结构教程_Java语言描述

    "实用数据结构教程_Java语言描述"这个资料提供了一个深入学习数据结构的平台,特别是针对Java程序员。 在Java中,数据结构主要分为以下几类: 1. **数组**:是最基本的数据结构,用于存储固定数量的同类型元素。...

Global site tag (gtag.js) - Google Analytics