/**
* Created by wushuang on 2014/11/19.
*/
public class SortTest { @Test
public void mainTest() {
int[] arr = new int[]{1, 8, 3, 2, 5, 6, 100, 23, 30, 12, 90, 3265, 0};
//insertSort(arr);
// selectionSort(arr);
// popSort(arr);
quickSort(arr, 1, arr.length - 1);
System.out.println(StringUtils.join(arr, ','));
} /**
* 插入
* 选择
* 冒泡
*/
public void insertSort(int[] targetArr) {
for (int i = 1; i < targetArr.length; i++) {
if (targetArr[i - 1] > targetArr[i]) {
int targetItem = targetArr[i];
int j = i - 1; while (j >= 0 && targetArr[j] > targetItem) {
targetArr[j + 1] = targetArr[j];
j--;
System.out.println(j);
}
targetArr[j + 1] = targetItem;
} }
System.out.println("insertSort:");
System.out.println(StringUtils.join(targetArr, ',')); } public void selectionSort(int[] targetArr) {
int minIndex = 0;
for (int i = 0; i < targetArr.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < targetArr.length; j++) {
if (targetArr[j] < targetArr[minIndex]) {
minIndex = j;
}
}
int temp = targetArr[i];
targetArr[i] = targetArr[minIndex];
targetArr[minIndex] = temp;
}
System.out.println("selectionSort:");
System.out.println(StringUtils.join(targetArr, ','));
} public void popSort(int[] targetArr) {
for (int i = 0; i < targetArr.length - 1; i++) {
for (int j = 0; j < targetArr.length - i - 1; j++) {
if (targetArr[j + 1] < targetArr[j]) {
int temp = targetArr[j + 1];
targetArr[j + 1] = targetArr[j];
targetArr[j] = temp;
}
}
}
System.out.println("popSort:");
System.out.println(StringUtils.join(targetArr, ','));
} public void quickSort(int[] targetArr, int leftIndex, int rightIndex) {
if (leftIndex>rightIndex){
// System.out.println("stop");
// System.out.println(leftIndex);
// System.out.println(rightIndex);
return;
}
int temp = targetArr[leftIndex];
int i = leftIndex;
int j = rightIndex;
while (i != j) {
while (targetArr[j] >= temp && i < j) {
j--;
}
while (targetArr[i] <= temp && i < j) {
i++;
}
if (i < j) {
int iTempVal = targetArr[i];
targetArr[i] = targetArr[j];
targetArr[j] = iTempVal;
}
}
targetArr[leftIndex] = targetArr[i];
targetArr[i] = temp; quickSort(targetArr, 0, i - 1);
quickSort(targetArr, i + 1, rightIndex); }
}

Java写 插入 选择 冒泡 快排的更多相关文章

  1. 快速排序 java实现 (原理-优化) 三路快排

    一.基本的快速排序 在数组中选取一个元素为基点,然后想办法把这个基点元素移动到它在排好序后的最终位置,使得新数组中在这个基点之前的元素都小于这个基点,而之后的元素都大于这个基点,然后再对前后两部分数组 ...

  2. 【算法】桶排->冒泡->快排

    啊哈 算法 http://pan.baidu.com/s/1jGGl2SI http://pan.baidu.com/s/15C1oq 1 节 最快最简单的排序——桶排序 在我们生活的这个世界中到处都 ...

  3. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  4. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  5. C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)

    #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...

  6. C++学习(三十八)(C语言部分)之 排序(冒泡 选择 插入 快排)

    算法是解决一类问题的方法排序算法 根据元素大小关系排序 从小到大 从大到小冒泡 选择 插入 快排希尔排序 归并排序 堆排序 冒泡排序 从头到尾比较 每一轮将最大的数沉底 或者最小数字上浮 选择排序 1 ...

  7. wikioi 1076 排序 【这里含冒泡、选择、插入以及快排库函数的调用】

    /*=================================================================== 1076 排序 题目描述 Description 给出n和n ...

  8. Java排序算法 [选择、冒泡、快排]

    选择排序: 简述:从数组的第一个元素开始,依次与其他所有的元素对比,如果比自身大或小(取决于升序或降序)交换位置. package com.sort; import java.util.Arrays; ...

  9. Java实现的各种排序算法(包括冒泡,快排等)

    //堆排序 不稳定 import java.util.Arrays; public class HeapSort { public static void main(String[] args) { ...

随机推荐

  1. idea 项目添加web支持

    选中项目添加 add - web

  2. celery 实例进阶

    认识 这里有几个概念,task.worker.broker.顾名思义,task 就是老板交给你的各种任务,worker 就是你手下干活的人员. 那什么是 Broker 呢? 老板给你下发任务时,你需要 ...

  3. Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)

    相关资料: 注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYi ...

  4. IOS 地图移动中心点获取

    MKMap显示地图后,如果用户移动了地图,自己定义的数据就需要刷新了,所以这个时候,中心点的经纬度就比较重要了. 本文演示如何获取经纬度 在MKMapViewDelegate里有个方法 - (void ...

  5. [转]mysql如何利用Navicat 导出和导入数据库

    MySql是我们经常用到的数据,无论是开发人员用来练习,还是小型私服游戏服务器,或者是个人软件使用,都十分方便.对于做一些个人辅助软件,选择mysql数据库是个明智的选择,有一个好的工具更是事半功倍, ...

  6. docker探索-Docker 1.13 编排能力进化(十三)

     简介  docker stack deploy和docker-compose up,这两个命令都是操作compose的yml文件的,有什么区别?想知道这个问题,看下面文章 https://yq.al ...

  7. 卡西欧(casio)Fx-5800p程序调试器||模拟器V1.0

    一.[背景] 都说这个卡西欧5800p没有模拟器,模拟器其实就是个电脑上面模拟他的界面的东西,但是真正的核心,他不一定有,而且我们测量方面的编程及时有了所谓的外形模拟器也学不会的. 都说这个卡西欧58 ...

  8. JVM——代空间的划分

    首先看在JVM的堆中,按代的划分: Young:主要是用来存放新生的对象. Old:主要存放应用程序中生命周期长的内存对象. Permanent:是指内存的永久保存区域,主要存放Class和Meta的 ...

  9. <孤独者生存(小小辛巴投资手记)>读书笔记

    书在这里 让投机客梦醒的办法就是让资产损失至少一半 天不会塌下来,世界末日也不会这么快就降临,经济也许会萧条但不会崩溃,人们还得穿衣吃饭.休息劳作 每个笨蛋都会从自己的错误中吸取教训,聪明的人则从别人 ...

  10. go语言简述

    Go是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go语言被设计成一门应用于搭建web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言.对于高性能分布式系统领域而言,Go语 ...