/**
* 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. Oracle 项目中 SQL 脚本更新方式

    DECLARE hasVersion ); dbVersion ); BEGIN ) INTO hasVersion FROM ELB_SETTINGS E WHERE E.KEY='dbVersio ...

  2. mysql 通过使用联全索引优化Group by查询

    /*SELECT count(*) FROM (*/ EXPLAIN SELECT st.id,st.Stu_name,tmpgt.time,tmpgt.goutong FROM jingjie_st ...

  3. PostgreSQL学习手册(数据表)<转>

    一.表的定义: 对于任何一种关系型数据库而言,表都是数据存储的最核心.最基础的对象单元.现在就让我们从这里起步吧.    1. 创建表:    CREATE TABLE products (      ...

  4. tar包解压后用户名改变

    最近开发项目时在PC上wang用户及组下打包的tar包解压到嵌入式设备root用户下,文件目录及文件用户名改为dbus和dbus组,导致cron等应用异常. 出现此问题时可以通过修改相应文件(件)的用 ...

  5. Python 读取数据

    将一个文件夹下面的图像和对应的pts读进来,然后把pts文件里面的数据读入一个数组,然后画到图像上: # -*- coding:utf- -*- """ 测试数据样例 & ...

  6. Java编程的逻辑 (48) - 剖析ArrayDeque

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  7. 【进阶修炼】——改善C#程序质量(3)

    32, 总是优先考虑泛型. 泛型代码有很好的重复利用性,和类型安全性. 33, 应尽量避免在泛型类中声明静态成员. 静态成员达不到共享的目的.List<int>和List<Strin ...

  8. Kafka分区数与消费者个数

    Kafka的分区数是不是越多越好? 分区多的优点 kafka使用分区将topic的消息打散到多个分区分布保存在不同的broker上,实现了producer和consumer消息处理的高吞吐量.Kafk ...

  9. openvpn push "route

    ①在openvpn的配置文件里增加push "route 192.168.4.0 255.255.255.0",目的是为客户端加一条路由,这样客户端才有可能访问到办公网络中出VPN ...

  10. Java 将图片转二进制再将二进制转成图片

    import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOu ...