java 基础排序(冒泡、插入、选择、快速)算法回顾

  • 冒泡排序
private static void bubbleSort(int[] array) {
int temp;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
} print(array);
}
  • 插入排序
private static void insertSort(int[] array) {
int j;
//从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
for (int i = 1; i < array.length; i++) {
int tmp = array[i];//记录要插入的数据
j = i;
//从已经排序的序列最右边的开始比较,找到比其小的数
while (j > 0 && tmp < array[j - 1]) {
//向后挪动
array[j] = array[j - 1];
j--;
}
//存在比其小的数,插入
array[j] = tmp;
} print(array);
}
  • 选择排序
private static void choiseSort(int[] array) {
//记录目前能找到的最小值元素的下标
int min;
//经过N-1轮比较
for (int i = 0; i < array.length - 1; i++) {
min = i;
//每轮需要比较的次数
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
} //将找到的最小值和i位置所在的值进行交换
if (i != min) {
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
} print(array);
}
  • 快速排序

快速排序算法思想

 /**
* 快速排序
*
* @param array
* @param left
* @param right
*/
private static void quickSort(int[] array, int left, int right) {
if (left >= right) return;
int pivot = partition(array, left, right);
quickSort(array, left, pivot - 1);
quickSort(array, pivot + 1, right); } /**
* 数组划分
*
* @param array
* @param left
* @param right
* @return
*/
private static int partition(int[] array, int left, int right) {
int pivotKey = array[left];
while (left < right) {
while (left < right && array[right] >= pivotKey) {
right--;
}
array[left] = array[right]; while (left < right && array[left] <= pivotKey) {
left++;
}
array[right] = array[left];
}
array[left] = pivotKey;
return left;
}
  • 测试
private static void print(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.printf(array[i] + " ");
}
} public static void main(String[] args) {
int[] array = {4, 2, 8, 9, 5, 7, 6, 1, 3};
System.out.println("原始数据:");
print(array);
System.out.println("\r\n");
System.out.println("冒泡排序:");
bubbleSort(array);
System.out.println("\r\n");
System.out.println("选择排序:");
choiseSort(array);
System.out.println("\r\n");
System.out.println("插入排序:");
insertSort(array); int array[] = {65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85}; System.out.println("快速排序前:" + Arrays.toString(array)); quickSort(array, 0, array.length - 1); System.out.println("快速排序后:" + Arrays.toString(array));
}

java 基础排序(冒泡、插入、选择、快速)算法回顾的更多相关文章

  1. c++ 排序 冒泡 插入 选择 快速

    //冒泡 #include <iostream> using namespace std; void bubbleSort(int* list,int index) { ;i--) //i ...

  2. java面试准备之基础排序——冒泡与选择排序

    选择排序:     [java]    public void select(int[] arr){            for(int i=0;i<arr.length;i++){      ...

  3. Java基础【冒泡、选择排序、二分查找】

    冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置   大的数字后浮 如   12      8    5     31 第一轮   8   5   12   31 第二轮   5   8 ...

  4. 《java数据结构与算法》系列之“简单排序"-冒泡,选择,插入

    好几天又没写,因为这几天很闲,平时忙的时候自己再累都不会睡着,但是呢这没事了,照理说应该是不瞌睡了,结果还睡着了. 所以说,人很贱.也验证了一句话,没有目标的人其实最无聊.人一定要有自己的工作,这工作 ...

  5. Java数据结构和算法(三)--三大排序--冒泡、选择、插入排序

    三大排序在我们刚开始学习编程的时候就接触过,也是刚开始工作笔试会遇到的,后续也会学习希尔.快速排序,这里顺便复习一下 冒泡排序: 步骤: 1.从首位开始,比较首位和右边的索引 2.如果当前位置比右边的 ...

  6. java 基础排序算法

    冒泡: 从左往右依次比较相邻的两个数,将小数放在前面,大数放在后面. public void bobSort(){        for(int i=0;i<length-1;i++){//排序 ...

  7. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  8. 一天一个Java基础——排序

    插入排序 直接插入排序: 当插入第i个数据元素k时,由前i-1个数据元素组成已排序的数据序列,将k与数据序列中各数据元素依次进行比较后,插入到数据序列的适当位置,使得插入后的数据序列仍是排序的. 直接 ...

  9. java基础2_运算符,选择语句

    算数运算符  +    相加  字符串的连接  正数 -    相减  负数 *    相乘 /    相除    10 / 3 ==> 3  两个操作数中精度最高的是int 结果也是int % ...

随机推荐

  1. 浅析vue混入(mixin)

    vue中的混入,可以在一定程度上提高代码的复用性.通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”.但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同 ...

  2. Spring Boot 2.0 学习笔记(一)——JAVA EE简介

    本章内容:JAVA EE>Spring>Spring Boot 一.JAVA EE简介 1.1 Java ee优点:结束了Web开发的技术无序状态,让程序员.架构师用同一种思维去思考如何架 ...

  3. Docker 构建私有仓库

    Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包含了数量超过15000的镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来实现. 可以在htt ...

  4. iOS面试的算法相关

    转自:https://www.jianshu.com/p/c4820b159159 面试中遇到的这些算法,在平常工作中,基本不会用到. 不过现实的面试中经常喜欢问关于算法的问题 有些还要求写出代码.一 ...

  5. 一台电脑如何管理多个ssh key

    目录 一.生成ssh key 1.1 生成密钥(必须) 1.2 设置路径 (可选) 1.3 指定密语字符串(可选) 二.设置ssh key的代理 2.1. 首先查看代理 2.2. 添加私钥 三.添加公 ...

  6. JQuery中操作元素的属性_对象属性

    我们主要是通过attr去获取元素的属性: 看body内容: <body> <p> 账号:<input type="text" id="una ...

  7. ST MCU的UID

    ST MCU芯片中的绝大部分都内置一串96位唯一标识码[unique ID].时不时有人问起这个东西,尤其最近感,觉询问它的人甚是热闹.这里跟大家一起简单分享下. 上面说了ST MCU芯片中的绝大部分 ...

  8. python学习-list

    # 数据类型之 列表 有顺序.# 关键字:list# 语法 :[] 数据之间用,隔开.列表当中的数据,可以是任意类型.数值是可以重复的.a = []b = ["魔王", " ...

  9. Unity学习路线

    转载请标明原文地址:http://www.cnblogs.com/zhangyukof/p/7068615.html 1.Unity下载安装和破解方法: http://blog.sina.com.cn ...

  10. Python高级应用程序设计任务

    Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...