/**
* 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. java 多线程 19: ReentrantLock 与 Condition

    ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大. Reentran ...

  2. Pandas Dataframe增、删、改、查、去重、抽样基本操作

    总括 pandas的索引函数主要有三种: loc 标签索引,行和列的名称 iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0 ix 是 iloc 和 loc的合体 at是loc的快 ...

  3. BaseRecyclerViewAdapterHelper使用

    Reference: https://www.jianshu.com/p/1e20f301272e 一.框架引入 先在项目的 build.gradle(Project:XXXX) 的 reposito ...

  4. 无刷新文件上传 利用iframe实现

    效果如图: 示例是基于asp.net mvc实现的 html代码: <form id="form2" name="form2" class="f ...

  5. Pyperclip – A cross-platform clipboard module for Python

    Usage is simple: import pyperclip pyperclip.copy('The text to be copied to the clipboard.') spam = p ...

  6. 【Unity笔记】Terrain地形制作坍塌/深坑

    Unity的Terrain组件在[set the terrain height]分页下,height高度为0时,可理解为该地形的海平面高度,此时就不能地形下榻.把height调到100,点击[flat ...

  7. <股市高手和你想的不一样>读书笔记

    书在这里 在股市中挖掘真正有成长潜力的好企业,是成功投资者的关键 股票被低估的时候,才值得买 我们买股票,就是买这家公司的未来 公司的成长性要重点看两个方面,一个方面要看该公司近三年的成长趋势,另外一 ...

  8. 如何使用sendEmail发送邮件

    sendEmail是一个轻量级,命令行的SMTP邮件客户端.如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php.bashperl和web站 ...

  9. vs自己主动生成的WebService配置文件在部署到IIs6后,服务调用失败的解决方法

    近日.在项目中须要引用java公布的WebService,加入服务引用后,调用一切正常. 配置例如以下: <system.serviceModel> <bindings> &l ...

  10. 升级 Elasticsearch 集群数量实战记录

    搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...