`

排序及二分查找

阅读更多
/**
 * @className:TwoDivide.java
 * @classDescription:排序和二分查找
 * @author:jiangmianyue
 * @createTime:2011-6-15
 */

public class TwoDivide {

	/**
	 * 冒泡排序
	 * 
	 * @author jiangmianyue
	 * @createTime 2011-6-15
	 * @param args
	 */
	public static void main(String[] args) {
		int[] aa = new int[] { 1, 8, 18, 38, 98, 218, 982, 1189 };

		// 冒泡排序
		System.out.println("排序前");
		for (int i = 0; i < aa.length - 1; i++) {
			System.out.println(aa[i]);
		}
		for (int i = 1; i < aa.length; i++) {
			for (int j = 0; j < aa.length; j++) {
				if (aa[i] < aa[j]) {
					aa[i] = aa[i] + aa[j];
					aa[j] = aa[i] - aa[j];
					aa[i] = aa[i] - aa[j];
				}
			}
		}
		System.out.println("排序后");
		for (int i = 0; i < aa.length; i++) {
			System.out.println(aa[i]);
		}

		System.out.println("第二种排序");
		for(int i = 0; i < aa.length - 1; i++){
			for(int j = 0; j < aa.length - i -1; j ++){
				if (aa[j] < aa[j + 1]){
					aa[j] = aa[j] + aa[j + 1];
					aa[j + 1] = aa[j] - aa[j + 1];
					aa[j] = aa[j] - aa[j + 1];
				}
			}
		}
		for (int i = 0; i < aa.length; i++) {
			System.out.println(aa[i]);
		}
		System.out.println(doOrder(aa, 100));

	}

	/**
	 * 二分查找
	 * 
	 * @author jiangmianyue
	 * @createTime 2011-6-15
	 * @param aa
	 *            数组
	 * @param a
	 *            要查找的值
	 * @return 返回在数据中的位置
	 */
	public static int doOrder(int[] aa, int a) {
		int low = 0; // 数组的最小值小标
		int hight = aa.length - 1; // 数组的最大值下标
		// while条件是当low小于等于hight时执行
		while (low <= hight) {
			// 取数组的中间下标
			int middle = (hight + low) / 2;
			if (a < aa[middle]) {
				// 当要查找的值小于中间值的时候把中间值减1赋值给最大值
				hight = middle - 1;
			} else if (a > aa[middle]) {
				// 当要查找的值大于中间值的时候把中间值加1赋值给最小值
				low = middle + 1;
			} else {
				// 最后得出的中间值为要的下标值
				return middle;
			}
		}
		return -1;
	}
}

 

 

分享到:
评论
1 楼 xuehanxin 2011-07-19  
里面有个概念性错误。。。看谁第一个发现

相关推荐

    文件读出数组进行选择排序和二分查找(java)

    在Java编程中,文件读取、数组操作、选择排序以及二分查找是常见的编程任务,它们涉及了IO流、数据结构和算法等多个方面。以下是这些知识点的详细解释: 1. **文件读取**:Java提供了丰富的IO流类库用于读取文件。...

    快速排序对数组排序,二分查找。

    快速排序和二分查找是计算机科学中非常基础且重要的算法,它们在数据处理和效率提升方面发挥着关键作用。快速排序是一种高效的排序算法,而二分查找则是一种在有序序列中寻找特定元素的有效方法。 快速排序由英国...

    快速排序和二分查找

    【快速排序】是一种高效的排序算法...快速排序尤其适用于大数据量的排序,而二分查找则适合在已排序的数据中查找特定元素。在这个Java程序中,这两个算法被巧妙地结合在一起,提供了一个完整的银行客户信息管理的示例。

    数据结构查找、排序、二分查找、折半查找算法

    在这个主题中,我们主要关注查找和排序算法,特别是二分查找(折半查找)算法。这些算法在实际编程中具有广泛应用,包括数据库索引、搜索引擎优化和各种计算问题的解决。 首先,我们来看查找算法。查找是数据结构中...

    java冒泡排序、快速排序、二分查找

    Java 中的排序算法包括冒泡排序、快速排序等,而查找算法则有二分查找等。这些算法都是 Java 开发中非常重要的基础知识。本文将对冒泡排序、快速排序、二分查找进行详细的分析和图解。 冒泡排序 冒泡排序是一种...

    java选择排序,冒泡排序代码,二分查找

    自己写的java选择排序,冒泡排序代码,二分查找,还有500个小孩手拉手数三退一问题,供初学者参考一下

    flash as3 二分查找动画演示

    二分查找(Binary Search)是计算机科学中一种高效的数据检索方法,适用于已排序的数组或列表。它的基本思想是将目标值与数组中间元素进行比较,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在...

    二分查找算法和冒泡排序算法

    二分查找算法与冒泡排序算法是计算机科学中两种基础且重要的算法,它们在数据处理和数组操作中扮演着至关重要的角色。 首先,我们来详细探讨递归二分查找算法。二分查找,也称为折半查找,是一种在有序数组中查找...

    二分查找排序算法.zip

    二分查找排序算法是一种高效的排序方法,它是基于二分查找思想和插入排序的结合体。在计算机科学中,排序算法是处理数据集合的一种基础方法,它使得数据按照特定的顺序排列,例如升序或降序。二分查找排序算法特别...

    二分查找_测试

    但二分查找的前提条件是数据必须已经排序,如果数据未排序,需要先进行排序,这会增加额外的时间成本。 以下是二分查找的基本步骤: 1. 确定数组的中间索引,即 `mid = (left + right) / 2`。 2. 如果中间元素等于...

    快速排序 二分查找

    快速排序和二分查找是两种在计算机科学中广泛使用的算法,尤其在处理数据排序和查找问题时效率极高。本文将详细介绍这两种算法的概念、工作原理、实现方式以及它们的应用场景。 快速排序是一种高效的排序算法,由C....

    C语言实现二分查找与排序

    本话题主要关注C语言实现的二分查找和排序算法,这两种算法在计算机科学中有着重要的应用。 **二分查找** 是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两个部分,每次比较中间元素与目标值...

    快速排序 二分查找 c++

    根据给定的文件信息,我们可以深入探讨两个关键的计算机科学概念:快速排序(Quick Sort)与二分查找(Binary Search)。这两个算法都是数据结构与算法领域中的基础且重要的知识点,被广泛应用于各种场景中,特别是...

    快速排序和二分查找 C++使用

    完成排序和二分查找算法,而不要用语言中的类库支持;(2)实现查找终止条件;(3)实现位置查找算法。

    MATLAB实现插入排序、二分归并排序、归并排序.rar

    不同之处在于,归并排序不使用二分查找,而是将数组分为两半,然后对每一半进行排序,再合并。归并排序在MATLAB中实现时,也需要递归地将数组划分为更小的部分,直到每个部分仅包含一个元素,然后逐步合并这些元素,...

    折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)

    如果数据未排序,那么在使用二分查找之前,必须先进行排序,这会增加额外的时间成本。排序算法如快速排序、归并排序等虽然平均时间复杂度也为 O(n log n),但实际执行效率还受到数据分布情况和选择排序算法的影响。...

    二分查找解题

    需要注意的是,二分查找的前提是数据必须是有序的,因此在实际应用中,我们通常会在对数据排序后使用二分查找。例如,在大型数据集的查找、插入和删除操作中,结合排序和二分查找可以极大地提高效率。 总的来说,二...

    二分查找最简单教程

    二分查找是一种在有序数组中查找特定元素位置的算法,它利用数组元素排序的特性,通过比较数组中间元素与目标值的大小,将查找区间缩半来加快查找速度。该算法适用于有序集合,能够将时间复杂度从线性查找的O(n)降低...

    C# 经典排序算法大全和二分查找算法

    本资源“C#经典排序算法大全和二分查找算法”提供了多种经典的排序算法实现,以及C#中的二分查找算法。让我们深入探讨这些算法的原理、实现方式以及它们在实际开发中的应用。 首先,我们来看一下排序算法。排序是将...

    VB 二分查找

    然而,如果数据未排序或经常需要插入和删除元素,二分查找可能不是最佳选择,因为这些操作会破坏已排序的顺序。 ### 5. 扩展讨论 - **变种与优化**:二分查找可以进行一些变种,例如对链表的二分查找,或者在有...

Global site tag (gtag.js) - Google Analytics