/**
@auther:kevin
@function:
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
*/
public class BubbleSort
{
public static void main(String args[]){
int a[] = {110,23,1,12,34,23} ; //定义一个数组
int temp; //temp用于存储
for(int i=1;i <=a.length-1;i++)
{
for (int j=0;j<=a.length-1-i; j++)
{
if(a[j]>a[j+1])//如果前一个数大于后一个数
{
temp = a[j+1]; //a[j]与a[j+1]调换位置
a[j+1] = a[j];
a[j] = temp;
}
}
}
for(int i=0;i <a.length;i++)
System.out.println(a[i]);
}
}
-------------------------------------------------------------------------
【快读排序】
import java.util.Arrays;
/**
* 快速排序
* @author Administrator
*
*/
public class QuickSort {
/**
* 一趟比较划分结果
* @param sortIn 传入的数组
* @param i 区间下界
* @param j 区间上界
* @return 返回基准最终位置
*/
private static int partition(Integer[] sortIn, int i, int j) {
int pivot = sortIn[i];
while (i < j) {
// 从右向左扫描,查找第一个关键字小于pivot的记录
while (i < j && sortIn[j] >= pivot)
j--;
if (i < j) {
swap(sortIn, i, j);// 交换sortIn[i]和sortIn[j]
i++;
}
// System.out.println("从右向左扫描:" + Arrays.asList(sortIn).toString());
// 从左向右扫描,查找第一个关键字大于pivot的记录
while (i < j && sortIn[i] <= pivot)
i++;
if (i < j) {
swap(sortIn, i, j);
j--;
}
// System.out.println("从左向右扫描:" + Arrays.asList(sortIn).toString());
}
sortIn[i] = pivot;// 基准位置已被最终定位
//System.out.println("标记:" + pivot);
return i;
}
/**
* 递归实现快速排序
* @param sortIn
* @param low
* @param high
*/
public static void quickSort(Integer[] sortIn, int low, int high) {
int pivotpos;// 划分后的基准记录的位置
if (low < high) {// 仅当区间长度大于1时才需排序
pivotpos = partition(sortIn, low, high);// 做划分
quickSort(sortIn, low, pivotpos - 1);// 对左区间进行递归排序
quickSort(sortIn, pivotpos + 1, high);// 对右区间进行递归排序
}
}
private static void swap(Integer[] sortIn, int i, int j) {
// TODO Auto-generated method stub
int temp = sortIn[i];
sortIn[i] = sortIn[j];
sortIn[j] = temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] a=new Integer[] { 8, 6, 1, 5, 4 };
quickSort(a,0,a.length-1);
System.out.println("最终结果:" + Arrays.asList(a).toString());
}
}
分享到:
相关推荐
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序 选择排序 ...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡...
冒泡排序 选择排序 插入排序 归并排序 快速排序 基数排序(桶排序) 希尔排序 堆排序 三、basic文件夹是基础相关 Java简单的算法题,目前有20道 递归知识~ 四、datastructure 2018年9月25日更新,_old文件夹的是之前...
java数据分析源码 一、多线程高并发(concurrent、jvm包) 1.JUC多线程及高并发 ...快速排序(plus版冒泡排序) 4.6 归并排序 4.7 基数排序(桶排序) 小总结: (1)速度方面:桶排序、快速排序、希尔排
4.2.2 冒泡排序算法示例 102 4.3 选择排序法 104 4.3.1 选择排序算法 104 4.3.2 选择排序算法示例 105 4.4 插入排序法 107 4.4.1 插入排序算法 107 4.4.2 插入排序算法示例 108 4.5 Shell排序法 110 4.5.1 ...
冒泡排序 选择排序 插入排序 归并排序 快速排序 基数排序(桶排序) 希尔排序 堆排序 三、basic文件夹是基础相关 Java简单的算法题,目前有20道 递归知识~ 四、datastructure 更新,_old文件夹的是之前的(.. 五、...
计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范...
冒泡排序,插入排序,选择排序,快速排序,堆排序,合并排序,广度优先搜索,深度优先搜索,二进制搜索,lru,dijkstra,A *(计划中) 概念 位操作,OOP,动态编程,图形(计划的) 破解编码面试 (〜2.7。交集) ...
【算法】快速排序 142 【算法】归并排序的过程?时间复杂度?空间复杂度? 143 【算法】什么是一致性哈希?用来解决什么问题? 144 【性能优化】页面静态化 144 【设计模式】写一个单例(延迟加载,高性能) 144 【容器...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...