第九讲 数组排序算法:冒泡排序、选择排序、插入排序及二分查找技术
来源:互联网 发布:oracle数据库有可视化 编辑:程序博客网 时间:2024/05/29 00:33
导读:
对于Java数组元素的排序是很重要,因为在商业开发中,对于数据的排序处理是很常用的技术之一。所以呢,今天就以例子和分析来阐述一下我们为什么要学习Java数组元素的排序,否则我们学来到底是干嘛用的都不知道。岂不是儿戏了?嗯,所以我们对于这些算法要精通,更要知道怎么在实际的开发中做到灵活使用,而能够灵活使用的唯一根本就是对技术点的核心有很好掌握和认识。
第一、冒泡排序算法
①、所谓冒泡,我们可以想象一下,小时候去有用,在河底潜水的时候宁叔放了一连串的屁哦!然后最小的那个就会飞快地冒到河面,嘣的一下爆了,(然后很臭,哈哈~)对,其实原理就是这样,代入Java数组中就如此:一系列的数据在一个数组容器里面,最小的那个像那个臭屁一样,快速冒起来,然后最大的那个数就在后面了。自然而然形成了升序排列,当然,您可以在程序中控制它成为降序排列都是ok的。
代码如下——
public static void bubbleSort(int[] array)
{
for(int i = 0 ; i < array.length; i++)
{
for(int j = 0 ; j < array.lenght-1-i ; j++)
{
if(array[j]>array[j+1)
{
int temp = array[j] ;
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
代码解释:
因为数组是连续存储的,也就是说,这个循环目的在于把数组从第一个位置开始到最后一个搜索一次,看看哪一个比较大。而用array[j]是前一个对array[j+1]相邻的一个来比较,所以它核心思想是相邻两个元素进行比较,大的那个在后面,小的那个被推到前面的位置了,以此类推。最后小的元素都在左边,而大的呢,在右边了。ok,这就完成了排序。在日常用,我们把价格高的商品的id可以做这些操作,让用户得到最低价或者最高价具有异曲同工之妙。
第二、选择排序我们来看看代码——
//选择排序
public class SelectionSort {
public static void main(String[] args) {
int[] arr={1,3,2,45,65,33,12};
System.out.println("交换之前:");
for(int num:arr){
System.out.print(num+" ");
}
//选择排序的优化
for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
int k = i;
for(int j = k + 1; j < arr.length; j++){// 选最小的记录
if(arr[j] < arr[k]){
k = j; //记下目前找到的最小值所在的位置
}
}
//在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
if(i != k){ //交换a[i]和a[k]
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
System.out.println();
System.out.println("交换后:");
for(int num:arr){
System.out.print(num+" ");
}
}
}
第三、插入排序算法
代码如下——
插入排序
public void insertSort(int a[]) {
int n = a.length;
for (int i = 1; i < n; i++) { //将a[i]插入a[0:i-1]
int t = a[i];
int j;
for (j = i - 1; j >= 0 && t < a[j]; j--) {
a[j + 1] = a[j];
}
a[j + 1] = t;
}
}
第四、二分法算法
代码如下——
public static int binarySearch(int[] arr, int target) {
if (arr != null) {
int min, mid, max;
min = 0; // the minimum index
max = arr.length - 1; // the maximum index
while (min <= max) {
mid = (min + max) / 2; // the middle index
if (arr[mid] < target) {
min = mid + 1;
} else if (arr[mid] > target) {
max = mid - 1;
} else {
return mid;
}
}
}
return -1;
}
- 第九讲 数组排序算法:冒泡排序、选择排序、插入排序及二分查找技术
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 冒泡排序,选择排序,直接插入排序,二分查找排序
- 三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
- 插入,冒泡,选择,快速排序,二分查找
- 排序----冒泡,选择,插入,二分查找
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
- 使用指针法对数组进行冒泡排序、选择排序、插入排序法、二分查找法
- 冒泡排序、选择排序、插入排序以及二分法查找算法
- Java数据结构算法之选择排序、插入排序、冒泡排序、二分查找
- 基础排序算法总结(插入、选择、冒泡、合并、二分查找、堆排序、快速排序、基数排序、桶排序、计数排序)
- 数组(冒泡排序,选择排序,插入排序)
- 数组 冒泡排序 选择排序 插入排序
- 插入,冒泡排序算法,二分查找
- 冒泡、选择、插入、二分排序算法
- 【算法】插入排序/冒泡排序/选择排序
- 中国海洋大学 软件工程 考研交流
- Python2.x与3.x版本区别
- NoSQL之MongoDB简介
- 又遇IDEA 乱输入代码,也不报错问题,解决后,笔而记之。
- 695. Max Area of Island
- 第九讲 数组排序算法:冒泡排序、选择排序、插入排序及二分查找技术
- 友盟推送
- 培训第一天,Java简介,JDK安装,环境配置及Java基础语法
- java-判断字符串是否为数字
- LINUX分区
- linux u-boot,/spl/u-boot-spl.lds:2: syntax error
- 中企动力与中国质量万里行消费投诉平台达成战略合作
- Python语法二 (人生苦短,我用Python)
- 深坑之Webview,解决H5调用android相机拍照和录像