/**
* 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. 6. 集成学习(Ensemble Learning)算法比较

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  2. Eigen教程(7)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 归约.迭代器和广播 归约 在Eigen中,有些函数可以统计matrix/array的 ...

  3. Android NFC近场通信2——NFC标签调度

    上面一篇文章简单介绍了NFC的背景和技术应用,今天主要是讲解一下NFC如何发起通信和标签通信(主要是翻译android官网的资料,中间加入个人心得). NFC总是在一个发起者和一个被动目标之间发生.发 ...

  4. [转]Oracle存储过程总结

    原文地址:https://www.cnblogs.com/tingbogiu/p/5641000.html 1.存储过程结构 1.1 第一个存储过程 create or replace procedu ...

  5. spring security 注解@EnableGlobalMethodSecurity详解

     1.Spring Security默认是禁用注解的,要想开启注解,需要在继承WebSecurityConfigurerAdapter的类上加@EnableGlobalMethodSecurity注解 ...

  6. EM算法学习资料备忘

    将学习EM算法过程中看到的好的资料汇总在这里,供以后查询.也供大家參考. 1. 这是我学习EM算法最先看的优秀的入门文章,讲的比較通俗易懂,并且举了样例来说明当中的原理.不错! http://blog ...

  7. MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱 不忽悠!

    在NLP(自然语言处理)这个领域中,Python具有良好的声誉,于是也想学习一下.首先第一步就是需要在计算机上配置Python环境.由于Python自带的编辑器太简单,使用起来不顺手,于是就考虑在相对 ...

  8. Android——shape和selector和layer-list的(详细说明 转)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...

  9. Http接口获取数据写入Hdfs

    数据源类型:数组列表 [{field:value}, {field:value}, {field:value}, {field:value}] 1. 定义http数据源链接 package com.e ...

  10. openvpn之client配置篇

    对于client端,其配置目录文件下有如下文件: [root@localhost client1]# ll total -rw-r--r-- nobody nobody Sep ca.crt -rw- ...