数组高级部分--排序,查找

1.数组排序之冒泡排序:

两两比较,大的往后放放,第一次比较完毕之后,最大值就出现在了最大索引出,继续依次比较,得到一个排好序的数组!

2.数组排序之:选择排序:
          用0索引依次和后面的索引进行比较,第一次比较完毕之后,最小值出现在了最小索处!
               同理,其他索引也是依次进行比较!

3.数组查找

基本查找:数组元素查表法(查询数组中的元素第一次在数组中出现的索引):从头查到尾  
                  数组二分查找(折半查找)

思路:
               1)定义最大索引和最小索引
               2)计算出中间索引:
                   如果要查的元素和中间索引对应的元素相等,返回中间索引
                   如果不想等
                       大了,左边找
                       小了右边找
               3)重写计算出中间索引:
                   大了:max = mid -1 ;
                   小了:min = mid+1 ;
               4)继续回到(2)进行重新计算在查找!

4.数组快速查找

Arrays:sun公司提供的官方文档中的一个类:包含了数组排序以及数组搜索等等的一些方法!对数组操作的工具类
          java.util包下
          public static String toString(int[] a):将int类型的数组转换成字符串类型
          public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序。(该底层已经封装好了,
  属于快速排序算法封装的一个sort方法)
          public static int binarySearch(int[] a,int key):二分查找

时间: 2024-11-03 23:11:23

数组高级部分--排序,查找的相关文章

数组高级应用—排序与查找

1.数组排序 1)冒泡排序 /** * 冒泡排序基本概念是: * 依次比较相邻的两个数,将小数放在前面,大数放在后面. * 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后. * 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续, * 直至比较最后两个数,将小数放前,大数放后.至此第一趟结束, * 将最大的数放到了最后.在第二趟:仍从第一对数开始比较 * (因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数), * 将小数放前,大数放后,一直比较到倒数第二个数

java 13-1 数组高级二级查找

查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行对半(也就是设置 min索引为0,max索引为arr.length-1,然后对半的 索引mid为(min+max)/2) B:把所需要查找的数据x跟arr[mid]进行对比 a:两者的值相等,就返回mid索引 b:两者不等: 1.如果 x > arr[mid],则 min索引的值改变为:min =

OC基础第五讲--Block、数组高级、字面量

Block 1.1block与函数指针 函数: int sum(int x, int y) { retrun x + y; } 函数指针: 把上面函数原型int sum(int x, int y)中的函数名替换成(*p),即可得到一个函数指针int (*p)(int x, int y). 这个函数表示指针p指向一个函数,这个函数有两个int型参数,返回值是int类型. Block:把函数指针int (*p)(int x, int y)中的'*'换成'^'就是我们block的声明,即int (^p

【转载】Java集合类的排序,查找,替换操作

转自:http://blog.csdn.net/sunhuaqiang1/article/details/52142873 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对象后,我们可以根据Collection中的方法进行排序,查找,替换操作.而不用在东奔西走的利用什么各种排序算法.正则来实现了.在进行数组排序时,有时反而会因为参数问题而大费周折.例如,自己在利用快排进行数组排序时,当将参数(int []

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

Java排序查找算法——二分法与递归的应用实例

问题描述: 对数组元素进行查找与排序,利用二分法与递归实现. 完整实例1: public class SortDemo {    public static void main(String[] args)    {       int[] arr={10,2,300,41,15,6};       for(int a:arr)       {          System.out.print("["+a+"]");           }      // new

让无序数组元素进行排序,排序完后将排序后元素对应的原先元素的位置输出

题目: 让无序数组元素进行排序,排序完后将排序后元素对应的原先元素的位置输出 (1)方法1 方法1:先将数组元素原先的对应位置记录在另一个数组中       并在进行选择排序的过程中,交换数组元素的同时也交换对应位置数组中的对应元素值 /* 选择法排序 并在排序后的数组元素在原先数组的对应位置输出 方法1:先将数组元素原先的对应位置记录在另一个数组中 并在进行选择排序的过程中,交换数组元素的同时也交换对应位置数组中的对应元素值 */ #include <iostream> using name

Java数据结构 遍历 排序 查找 算法实现

1. 遍历算法(遍历二叉树6种方法) 1.1. 概述 遍历算法针对二叉树而言的,主要有先序.中序.后序三种遍历顺序,三种顺序又分别有递归和常规算法,二叉树遍历的主要思想是:遍历左子树,遍历右子树,访问根节点,由这三者的遍历顺序来确定是先序.中序还是后序.下面只要求掌握递归遍历算法,常规遍历算法见附录一. 1.2. 先序遍历算法 遍历顺序:访问根节点,遍历左子树,遍历右子树.代码如下: void preOrder(BinaryTreeNode bt) { if (bt == null)// 如果当

C/C++ 排序&amp;&amp;查找算法(面试)

一.排序 1.冒泡排序 1 void BubbleSort(int array[],int n) 2 { 3 int i=0; 4 int j=0; 5 int temp=0; 6 int flag = 0; 7 for(i=0;i<n - 1 ;i++) /*外循环控制排序的总趟数*/ 8 { 9 flag = 0; /*本趟排序开始前,交换标志应为假*/ 10 for(j=n-1;j > i;j--) /*内循环控制一趟排序的进行*/ 11 { 12 if(array[j] < ar