9、数组查询和冒泡排序算法

package com.xxx.xxx;

import java.util.Arrays;

public class demo10 {

    /**
     * 1、数组查询
     * 2、冒泡数组排序
     * @param args
     */
    public static void main(String[] args) {
        //1、数组查询
        /**
         * binarySearch(Object a[],Object key) 用的时候要先进行排序,如果没排序,则返回的结果是不确定的
         * a 要搜索的数组
         * key 要搜索的值    (如果key包含在数组中、则返回搜索值的索引、否则返回-1或“-”【插入点】)
         */
        int arr4[] = new int[]{23,45,44,75,14,45};    //定义数组
        Arrays.sort(arr4);    //进行排序
        int index = Arrays.binarySearch(arr4,14);    //搜索 14 的位置,排序后的索引是 0
        System.out.println("14的索引位置是:"+index);    //输出

        //1.1、数组排序2
        /**
         * binarySearch(Object [].a,int fromIndex,int toIndex,Object key)
         * a 要进行检索的数组
         * fromIndex 指定范围的开始处索引(包含)
         * toIndex 指定范围的结束索引(不包含)
         * key 要搜索的值
         */
        String str[] = new String[]{"ab","cd","ef","gh"};    //定义数组
        Arrays.sort(str);    //进行排序
        int index1 = Arrays.binarySearch(str,0,2,"cd");    //搜索 14 的位置,排序后的索引是 0
        System.out.println("cd的索引位置是:"+index1);    //输出

        System.out.println("---------------------");
        //2、 数组排序
        //2.1、冒泡排序
        /**
         * 0、小数往前放,大数往后放
         * 1、冒泡算法是由双层循环实现,其中外层循环用于控制排序轮数,一般为数组的长度-1
         * 因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序
         * 2、内层循环主要用于对比数组中每个临近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少
         */
        int[] array = {63,4,24,1,3,15};    //创建数组是乱序的
        for(int i=0;i<array.length;i++){
            //比较相邻两个元素,较大的往后冒泡
            for(int j=0;j<array.length-1;j++){
                if(array[j] > array[j+1]){    //if判断
                    int temp = array[j];    //把第一个元素的值保存在临时变量中
                    array[j] = array[j+1]; //把第二个元素保存在第一个元素中
                    array[j+1] = temp;         //把临时变量(也就是第一个元素的值)保存在第二个元素中
                }
            }
        }
        //遍历数组输出
        for(int i : array){
            System.out.print(">"+i);
        }

        System.out.println("---------------------");

    }

}
时间: 2024-10-08 04:56:30

9、数组查询和冒泡排序算法的相关文章

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

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

数组冒泡排序算法解析

/* * 冒泡排序算法 */ int[] numbers = { 23, 24, 44, 21, 94, 12, 26, 09 }; for (int i = 0; i < numbers.Length; i++) { for (int j = i + 1; j < numbers.Length; j++) { if (numbers[j] < numbers[i]) { ChangeNumber(numbers[j], numbers[i]); } } } for (int i = 0

数据结构之--冒泡排序算法及改进

冒泡排序,是我们学习数据结构第一个排序算法,也是一种最常见和简单的排序算法. 排序原理: 我们把一个数组从左到右依次两两元素比较,比较完成一趟后,能确定最大(最小)值,放在最右边(最左边): 剩下的元素重复上述步骤,直到整个数组有序. 该算法时间复杂度一般为n2  . java实现代码如下: public class BubbleSort { public static void swap(int[] array, int a, int b) { array[a] = array[a] ^ ar

冒泡排序算法的JavaScript实现

作为经典的排序算法之一,冒泡排序在JavaScript中也有多种实现方式. 在一些最常见的实现中会声明临时变量,在另一些不必声明临时变量的实现中则可能只支持数值数组或字符串数组(二者之一). 下面介绍两种[无须声明临时变量],[对数值数组和字符串数组都适用]的实现方式. ES5版: var arr = [5, 25, 2, 53, 22, 10]; function bubbleSort(arr) { for (var j = 1, len = arr.length; j < len; j++)

冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 本文地址:http://www.cnblogs.com/archimedes/p/bubble-sort-algorithm.html,转载请注明源地址. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽

冒泡排序算法可视化

在百度前端技术学院的任务列表那里看到了有一个任务是要求用javascript实现可视化的排序算法,感觉很有趣,就稍微研究了一下,本来是想实现冒泡排序算法和快速排序算法的可视化的,可是快速排序在要如何实现可视化这一步上感觉有一点难度,于是就暂时放弃了. 冒泡排序原理 冒泡排序我们应该都不陌生吧?很简单的两个for循环就可以实现了,其基本原理是:在一开始的时候,比较第一第二个数,如果如果第一个数比第二个数大的话则交换二者位置,在比较第二个和第三个数,同样的如果第二个数比第三个数大的话,则交换二者位置

冒泡排序算法。

   冒泡排序算法 题目: 给定7个int类型的数,用冒泡排序实现出来.  code:   public class Maopaopaixu {    public static  void fun()    {        int arr[] ={9,8,6,1,5,3,2};        System.out.println("数组排序前的顺序为:");        for(int i=0;i<arr.length;i++)        {            Sy

数据结构——排序——冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的执行时间,但是两种法在需要的交换次

javascript学习5-练习之2冒泡排序算法

复习冒泡排序算法,同时自己也写了一个排序算法. 实现效果: 1.自己的算法思想: 数组中数据取第一个为默认最小,依次和后面每个数据比较,只要有比其小的就交换直至找出最小的. 然后将第二个数据与其后面所有数据比较,找出最小,依次重复 2.冒泡排序算法思想: 数据从最低端到最高端为 a[n] ......a[0] 第一轮:将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]....a[n-1]和a[n]每次将大的往上冒 第二轮: 将a[0]与a[1]比较,高者上,然后依次比较a[1]和a