数组排序与查询

  1. 选择排序
  • 选择排序(Selection Sort)是一种简单直观的排序算法。

  原理:每一趟从待排序的数据元素中选择最小(或最大)的一个元素,顺序排在已排好序列的最后,知道全部待排序的数据元素排完。

  1. 冒泡排序
  • 一维数组的冒泡排序算法。

  原理:对比相邻的元素值,如果满足就交换元素值。

  1. 快速排序
  • 快速排序(Quick Sort)是对冒泡排序的改进,其排序速度相对较快。

  原理:通过一趟排序将要排序的数据分割为独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程可以递归进行,以此是整个诗句变为有序序列。

  假设要排序的数组是A[1]...A[N],首先任意选取一个数据(通常选第一个)作为关键数据,然后将所有比它小的数都放到它的前面,所有比他大的数据都放到他的后面,整个过程成为一趟快速排序,递归调用此过程,即可实现数组的快速排序。

  1. 直接插入排序
  • 一维数组的冒泡排序算法。

  插入排序是将一个记录插入到有序数列中,使得到的新的数列仍然有序。插入排序的思想是,将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组中的位置p,数组中p之后的元素都向后移一个位置,空出a(p),将x放入a(p),这样既可实现插入后数列仍然有序。 

  什么是排序算法的空间复杂度?

    排序算法的空间复杂度是指排序算法运行所需要的额外消耗存储空间,一般使用O()来表示,如直接插入排序法的空间复杂度为O(1).

  • 使用sort方法对数组进行排序

  Java中Arrays类提供了一个sort()方法。有很多重载格式,可以接收任意类型的数组并执行不同类型的排序。

  • 反转数组中元素顺序

  反转数组是对数组两边的元素进行替换,所以只需要循环数组长度的半数。

ArrayList可看做是动态数组。

posted @ 2019-03-29 17:20  Joy丨windy  阅读(178)  评论(0编辑  收藏  举报