- 二分查找
二分查找针对的是有一个有序的数组集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一般,一直查到要找的元素为止。
- 桶排序
核心思想是要将怕许的数据分到几个有序的桶里,每个桶里的数据再单独进行排序,桶内排序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。
- 冒泡排序
冒泡排序只会操作相邻的俩个数据,每次操作都会对相邻的俩个数据进行比较,再让它们交换为止。
public void BubbleSort(int [] array){
if(null == array) return;
if(1 == array.length) return;
for(int i = 0;i<array.length ; i++){
//提前推出冒泡循环标志位
boolean flag = false ;
for(int j = 0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
int temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
flag = true;
}
if(!flag) break;
}
}
}
- 插入排序
插入算法的核心是取末排序区间的元素,在已排序区间找到合适的位置插入,并保证已排序区间的元素一直有序。重复这个过程,直到未排序区间中元素为空,算法结束。
public void insertionSort(int[] a, int n){
if(n <=1) return;
for(int i =1;i < n ; ++i){
int value = a[i];
int j = i -1;
for(;j>=0 ;--j){
if(a[j] > value){
a[j+1] = a[j];
}else{
break;
}
}
a[j+1] = value;
}
}
- 选择排序
选择排序的思想有点类似于插入排序,也分已排序区间和未排序区间,但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。
- 归并排序
归并排序的排序思想: 如果要排序一个数组,先把数组从中间分为前后俩个部分,然后对前后俩部分分别排序,再将排序的俩部分合并到一起,这样整个数组就是有序的了。
- 快速排序
如果要将排序数组中下标从0 到10之间的一组数据,选择下标 0 到 10之间的任意一个数据作为分区点,然后再遍历这一组数据,将小于分区点的放左边,大于的放在右边,经过这一步骤之后,数组就被分成了三个部分,前部分是小于分区点的,中间部分就是分区点,后面则是大于分区点的,然后将前面小于分区点再分为三个部分,依次循环,直到分区完毕再合并,这时数组已经是有序的了。
网友评论