Java 常用算法(冒泡选择插入快排)
Posted baishiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 常用算法(冒泡选择插入快排)相关的知识,希望对你有一定的参考价值。
1. 冒泡排序的实现
冒泡排序是所有排序算法中最基本、最简单的一种。思想就是交换排序,通过比较和交换相邻的数据来达到排序的目的。
设数组的长度为N:
1、比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。
2、这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3、N=N-1,如果N不为0就重复前面二步,否则排序完成。
按照这个定义很快就能写出代码:
public static void sort(int[] arr){
int n = arr.length;
for (int i = 0; i < n; i++) {
for (int j = 1; j < n-i; j++) {
if(arr[j-1] > arr[j]){
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
2. 选择排序的实现
public static void sort(int[] arr){
int temp ;
int small;
for (int i = 0; i < arr.length; i++) {
small = i;
//找出最小数的下标
for (int j = i+1; j < arr.length; j++) {
if(arr[j] < arr[small]){
small = j;
}
}
//交换
if(small != i){
temp = arr[i];
arr[i] = arr[small];
arr[small] = temp;
}
}
}
3. 插入排序的实现
int temp ;
for (int i = 1; i < arr.length; i++) {
//待插入的数据
temp = arr[i];
int j;
for (j = i-1; j >= 0; j--) {
//判断是否大于 temp, 大于则后移
if(arr[j] > temp){
arr[j+1] = arr[j];
}else{
break;
}
}
arr[j+1] = temp;
}
}
4. 快速排序的实现
快速排序,顾名思义,是一种速度快,效率高的排序算法。
public static void sort(int arr[],int low,int high){
//1. 找到程序的出口
if( low > high){
return;
}
//2. 存
int i = low;
int j = high;
//3. key
int key = arr[i];
//4. 完成一次比较
while(i < j){
//4.1 从右边找到一个小于key的数
while(i<j && arr[j] > key){
j--;
}
// 4.2 从左边找到一个大于key的数
while(i<j && arr[i] <= key){
i++;
}
//4.3 交换
if(i<j){
int p = arr[i];
arr[i] = arr[j];
arr[j] = p;
}
}
//4.4 跳转key 的位置
int p = arr[i];
arr[i] = arr[low];
arr[low] = p;
//5. 对 key 左边的数据快速排序
sort(arr,low,i-1);
//6. 对 key 右边的数据快速排序
sort(arr,i+1,high);
}
以上是关于Java 常用算法(冒泡选择插入快排)的主要内容,如果未能解决你的问题,请参考以下文章