public class sort {
public static void main(String[] args) {
int[] arr = {2, 5, 3, 4, 8, 5, 1};
//sort_insert(arr);
//sort_bin(arr);
//sort_bubble(arr);
sort_quick(arr,0,6);
//sort_select(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
} //直接插入排序
public static void sort_insert(int[] arr) {
int n = arr.length;
int temp;
for (int i = 1; i < n; i++) {
if (arr[i] < arr[i - 1]) {//如果后面的小于前面的
int j = i - 1;
temp = arr[i];//因为往后会淹没要插入的
//下面的while是只要大于就后移一位,直到可以插入
while (j >= 0 && temp < arr[j]) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
} //折半插入排序
public static void sort_bin(int[] arr) {
int i, j, low, high, mid, temp;
int n = arr.length;
for (i = 1; i < n; i++) {
temp = arr[i];
low = 0;
high = i - 1;
while (low <= high) {
mid = (low + high) / 2;
if (temp > arr[mid]) {
low = mid + 1;
} else {
high = mid - 1;
}
}
for (j = i; j > low; j--) {
arr[j] = arr[j - 1];
}
arr[low] = temp; } } //冒泡排序
public static void sort_bubble(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
} //快速排序
public static void sort_quick(int[] arr, int left, int right) {
int temp;
int i = left, j = right;
if (left < right) {
temp = arr[left];
//完成一趟循环,将数组小于temp的放在左边,大于temp的放在右边
while (i != j) {//相等时候说明相遇了,此时i的位置就是插入的位置
//从右往左找到一个小于temp的元素
while (j > i && arr[j] > temp) {
--j;
}
if (i < j) {
arr[i] = arr[j];
++i;//指针右移动一位
}
//从左往右找,找到一个大于temp的元素
while (i < j && arr[i] < temp) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;//指针向前一位,刚移动的
} }
arr[i] = temp;
sort_quick(arr, left, i - 1);
sort_quick(arr, i + 1, right);
} } //简单选择排序,在无序序列选最小的放到有序的上面
public static void sort_select(int[] arr) {
for (int i = 0; i < arr.length; i++) {
//记住最小的序号,默认第一个
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
//交换当前i序号与得到最小的
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}

排序总结(java)的更多相关文章

  1. Spark基础排序+二次排序(java+scala)

    1.基础排序算法 sc.textFile()).reduceByKey(_+_,).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair= ...

  2. 几种经典的数据排序及其Java实现

    选择排序 思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k ...

  3. 专题 查找与排序的Java代码实现(一)

    专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...

  4. 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)

    http://blog.csdn.net/pzhtpf/article/details/7559896 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大 ...

  5. 希尔排序之Java实现

    希尔排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title ShellSort * @describe 希尔排序 1959 年 ...

  6. 选择排序之Java实现

    选择排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title SelectSort * @describe 选择排序 * @au ...

  7. 十大经典排序【Java实现,手工作坊式】

    终于把排序这个硬骨头,但是又很基础的知识点,自己手撕了一遍!之前,使用Python看着算法导论的书手撕过一遍,印象不是很深刻,容易忘记!好记性不如烂笔头!多自己思考解决问题 1,交换类CAS[最简单] ...

  8. 八大排序算法Java

    目录(?)[-] 概述 插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort 选择 ...

  9. POJ题目排序的Java程序

    POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...

  10. 有向图的拓扑排序算法JAVA实现

    一,问题描述 给定一个有向图G=(V,E),将之进行拓扑排序,如果图有环,则提示异常. 要想实现图的算法,如拓扑排序.最短路径……并运行看输出结果,首先就得构造一个图.由于构造图的方式有很多种,这里假 ...

随机推荐

  1. Django中ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) 1 ORM介绍 1.1 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对 ...

  2. 修改 input / textarea placeholder 属性的颜色和字体大小

    话不多说,直接上代码: input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #666; fon ...

  3. Jan.09

    [10个可爱又迷人的加分俚语]1. Be in the air 将要发生的事情2. Clear the air 消除误会3. Cost an arm and a leg 极其昂贵4. A bad eg ...

  4. struts标签怎么判断request里的属性是否为空 <s:if test="${list==null}"> </s:if>

    <s:if test="${weigou}==999"> //错误的 ${list==null} ,$实在strtus的配置文件中取值用的,不是在jsp页面里取值的的吧 ...

  5. minecraft初探

    1.在确保客户端和服务器的版本一致的情况下,如果登录出现客户端直接关闭,查看服务器端信息是提示id为空,请注意是否设置了: online-mode=false

  6. 框架-thrift-zookeeper-kafka

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架. 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 ...

  7. 构建微服务:Spring boot 入门篇

    什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而 ...

  8. mybatis源码数据库链接配置

    <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE configuration        ...

  9. eclipse光标变粗解决方法

    如上图,光标变成黑块好像没那么顺眼,原因是我们不小心按到了insert键造成的,再按一下insert键就OK了,如果delete和insert是一个键那么就用FN键+delete/insert键就可以 ...

  10. 4ci