四种排序(冒泡、插入、希尔、快排)java版

原创 2018年04月16日 12:20:33
package com.culater;


public class OneSort {
static int[] array = { 1, -3, 9, 12, 5, 7, 27, -7, 19, 3, 6, 29 };
static int length = array.length;


public static void main(String[] args) {
// TODO Auto-generated method stub
// bubbleSort();
// insertSort();
// shellSort();
fastsort(0, length - 1);
outputData();


}


/*
* 冒泡排序 相邻的两个数进行比较交换值
*/
public static void bubbleSort() {
int length = array.length;
for (int i = 0; i < length; i++)
for (int j = 0; j < length - 1; j++) {
if (array[i] < array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}


/*
* 插入排序 在排列好的列表中一个个插入
*/
public static void insertSort() {
for (int i = 1; i < length; i++) {
int j;
int temp = array[i];
// 在已排好的i个数组中 查找temp
for (j = i; j > 0 && temp < array[j - 1]; j--) {
array[j] = array[j - 1];
}
array[j] = temp;
}
}


// 希尔排序 减少了数组的移动次数 再结合插入排序
public static void shellSort() {
int h = 1;
while (h < length / 3) {
h = h * 3 + 1;
}
while (h > 0) {
for (int i = h; i < length; i++) {
int j;
int temp = array[i];
// 在已排好的i个数组中 查找temp
for (j = i; j > h - 1 && temp < array[j - h]; j -= h) {
array[j] = array[j - h];
}
array[j] = temp;
}
h = (h - 1) / 3;
}
}


// 快速排序 把数组划分两个数组 一直划分下去 关键字划分
public static void fastsort(int left, int right) {
if (right - left <= 0)
return;


int point = array[right];
int partition = partition(left, right, point);
fastsort(left, partition - 1);
fastsort(partition + 1, right);


}


public static int partition(int left, int right, int point) {
int leftPtr = left - 1;
int rightPtr = right;
while (true) {
// 将比关键字小的留在左端
while (leftPtr < rightPtr && array[++leftPtr] < point)
;
// 将比关键字大的留在右端
while (rightPtr < leftPtr && array[--rightPtr] < point)
;
if (leftPtr >= rightPtr)
break;
else {
int temp = array[leftPtr];
array[leftPtr] = array[rightPtr];
array[rightPtr] = temp;
}
}
int temp = array[leftPtr];
array[leftPtr] = array[rightPtr];
array[rightPtr] = temp;
return leftPtr;
}


// 遍历输出数组
public static void outputData() {
for (int i = 0; i < length; i++) {
System.out.printf(" " + array[i]);
}
}


}

数据结构JAVA版2017教学视频课程

本课程共28个教学视频课程,22小时的教学时间,深入浅出的理论讲解,用JAVA语言实现每个知识点的代码,大量的上机练习题讲解,通过家家乐停车场,佳佳乐彩票机,佳佳乐通讯录,编译原理的语法分析等项目的综合应用实训,上课PPT,上课源代码等资料可以直接下载使用
  • 2017年03月31日 13:31

各种排序算法(冒泡、选择、快排、插入、希尔、堆排、归并、计数、基数)

各种排序算法
  • wanglelelihuanhuan
  • wanglelelihuanhuan
  • 2016-05-07 22:42:55
  • 3576

排序算法(选择、希尔、二分插入、冒泡、直接插入、快速排序)

选择排序法                                                                                    第1趟,在待排序...
  • especialjie
  • especialjie
  • 2016-09-22 11:21:44
  • 1787

六大排序(选择,插入,冒泡,希尔,快排,堆排序)

1.实现简单选择排序、直接插入排序和冒泡排序。 2.实现希尔排序算法。 3.实现快速排序算法。 4.实现堆排序算法。 想想这么多排序方法,乍一看挺复杂,写起来还挺简单的…… #include #i...
  • martinue
  • martinue
  • 2016-06-14 18:17:19
  • 1017

五种排序方法(选择、冒泡、快排、插入、希尔)

*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Wo...
  • vcx08
  • vcx08
  • 2016-07-29 21:40:35
  • 1250

Java-十种内部排序实现(选择,冒泡,插入,希尔,堆,归并,快速,基数,计数,桶)源码下载

  • 2015年10月07日 10:00
  • 366KB
  • 下载

Java-十种内部排序实现(选择,冒泡,插入,希尔,堆,归并,快速,基数,计数,桶)及代码下载

选择排序 冒泡排序 插入排序 希尔排序 堆排序 归并排序 快速排序 基数排序 计数排序 桶排序 1. 选择排序这个排序方法最简单,废话不多说,直接上代码:public class SelectSort...
  • u010156024
  • u010156024
  • 2015-10-07 10:25:18
  • 2571

四种经典排序 冒泡,快排,插入,选择 C++实现

2016.8.23 C++
  • zhanghow
  • zhanghow
  • 2016-10-22 14:52:10
  • 471

【算法之常用排序算法(一)】八大常用内部排序算法(快排、冒泡、希尔、堆排序等)

概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 ...
  • cangchen
  • cangchen
  • 2015-04-01 23:09:32
  • 3636

Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]

冒泡排序: public void bubbleSort(){//O(n^2) //每一趟的比较一次就可能交换一次 for(int i=0;i...
  • lingzhm
  • lingzhm
  • 2015-03-09 20:23:13
  • 1323
收藏助手
不良信息举报
您举报文章:四种排序(冒泡、插入、希尔、快排)java版
举报原因:
原因补充:

(最多只允许输入30个字)