public class Sort {public static void main(String[] args) {int data[] = {43,54,123,5,98,10,7,74,5,54};System.out.println("原先数组:");for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");/*System.out.println("冒泡排序:");MySort.bubleSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("快速排序:");MySort.quickSort(data, 0, 9);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("插入排序:");MySort.bInsertSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("希尔排序:");MySort.shellSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("选择排序:");MySort.selectSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println(" 堆排序 :");int data2[] = C语言实现8种排序C语言实现8种排序{-1,43,54,123,5,98,10,7,74,5,54};MySort.heapSort(data2, 10);for(int i = 1; i < 11; i++) {System.out.print(data2[i] + "  ");}System.out.println("\n");/*System.out.println("归并排序:");MySort.mergeSort(data, 0, 9);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");*/System.out.println("基数排序:");MySort.radixSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");}
}class MySort {/----------------------冒泡排序----------------------**/public static void bubleSort(int data[], int n) {for(int j = 0; j < n - 1; j++) {for(int i = 0; i < n - j - 1; i++) {if(data[i] > data[i+1]) {int temp = data[i];data[i] = data[i+1];data[i+1] = temp;}}}}/----------------------快速排序----------------------**/public static int findPos(int data[], int low, int high) {int t = data[low];while(low < high) {while(low < high && data[high] >= t) {high--;}data[low] = data[high];while(low < high && data[low] <= t) {low++;}data[high] = data[low];}data[low] = t;return low;}public static void quickSort(int data[], int low, int high) {if(low > high) {return;}int pos = findPos(data, low, high);quickSort(data, low, pos - 1);quickSort(data, pos + 1, high);}/----------------------插入排序----------------------**/public static void bInsertSort(int data[], int n) {int low, high, temp, mid;for(int i = 1; i < n; i++) {low = 0;temp = data[i];high = i - 1;while(low <= high) {mid = (low + high) / 2;if(data[mid] > temp) {high = mid - 1;}else {low = mid + 1;}}int j = i;while((j > low) && data[j-1] > temp) {data[j] = data[j-1];--j;}data[low] = temp;}}/----------------------希尔排序----------------------**/public static void shellSort(int data[], int n) {int key, j;for(int step = n / 2; step > 0; step /= 2) {for(int i = step; i < n; i++) {key = data[i];for(j = i - step; j >= 0 && key < data[j]; j -= step) {data[j+step] = data[j];}data[j+step] = key;}}}/----------------------选择排序----------------------**/public static void selectSort(int data[], int n) {for(int i = 0; i < n - 1; i++) {int mix = i;for(int j = i + 1; j < n; j++) {if(data[j] < data[mix]) {mix = j;}}if(i != mix) {int temp = data[i];data[i] = data[mix];data[mix] = temp;}}}/----------------------堆排序----------------------**/public static void heapSort(int data[], int n) {for(int i = n / 2; i > 0; i--) {heapAdjust(data, i, n);}for(int i =n; i > 1; i--) {swap(data, 1, i);heapAdjust(data, 1, i - 1);}}public static void swap(int data[], int i, int j) {int temp = data[i];data[i] = data[j];data[j] = temp;}public static void heapAdjust(int data[], int i, int n) {int temp = data[i];for(int j = 2 * i; j <= n; j *= 2) {if(j < n && data[j] < data[j+1]) {j++;}if(temp >= data[j]) {break;}data[i] = data[j];i = j;}data[i] = temp;}/----------------------归并排序----------------------**/public static void mergeSort(int data[], int first, int last) {int mid = 0;if(first < last) {mid = (first + last) / 2;mergeSort(data, first, mid);mergeSort(data, mid + 1, last);merge(data, first, mid, last);}return;}public static void merge(int data[], int low, int mid, int high) {int[] temp = new int[high-low+1];int k;int left_low = low;int left_high = mid;int right_low = mid+1;int right_high = high;for(k = 0; left_low <= left_high && right_low <= right_high; k++) {if(data[left_low] <= data[right_low]) {temp[k] = data[left_low++];} else {temp[k] = data[right_low++];}}if(left_low <= left_high) {for(int i = left_low; i <= left_high; i++) {temp[k++] = data[i];}}if(right_low <= right_high) {for(int i = right_low; i <= right_high; i++) {temp[k++] = data[i];} }for(int i = 0; i < high-low+1; i++) {data[low+1] = temp[i];}return;}/----------------------基数排序----------------------**/public static int getNumPos(int num, int pos) {int temp = 1;for(int i = 0; i < pos - 1; i++) {temp *= 10;}return (num / temp) % 10;}public static void radixSort(int data[], int n) {int num = 0;int index = 0;int k = 0;int[][] radixArrays = new int[10][];for(int i = 0; i < 10; i++) {radixArrays[i] = new int[n+1];radixArrays[i][0] = 0;}for(int pos = 1; pos <= 31; pos++) {for(int i = 0; i < n; i++) {num = getNumPos(data[i], pos);index = ++radixArrays[num][0];radixArrays[num][index] = data[i];}int j = 0;for(int i = 0; i < 10; i++) {for(k = 1; k <= radixArrays[i][0]; k++) {data[j++] = radixArrays[i][k];}radixArrays[i][0] = 0;}}}
}

转载于:https://www.cnblogs.com/Firesun/p/10144489.html

Java 实现排序相关推荐

  1. Java常见排序算法

    Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html

  2. Java第三大的数,Java通过排序找出数组第三大数字

    Java通过排序找出数组第三大数字 1 方式一:对数组进行排序并返回第三大数字 通过对数组进行排序并返回第三大数字,我们可以找到java中的第三大数字.让我们看看完整的示例,以找到java数组中的第三 ...

  3. Java对象排序、中文排序、SortedSet排序使用和源码讲解

    在C.C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,Java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,就通过:C ...

  4. Java常见排序算法之插入排序

    一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...

  5. java 性能 排序_Java常用排序算法及性能测试集合

    package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...

  6. java list 排序_java list排序

    java list 排序主要用到: Collections.sort方法: package com.tom.compare; import java.util.ArrayList; import ja ...

  7. java选择排序解释_选择排序

    号内回复数据结构,获取整套算法视频 本文作者:skywang12345 欢迎点击下方阅读原文 选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法. 它的基本思想是:首先在未 ...

  8. java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...

    java编写排序的代码 在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成. 让我们看看下面的Employee类. public ...

  9. java set排序_Java Set排序的方法

    Java Set排序的方法 Set中TreeSet 本身就是有序的元素,那么下面重点介绍下HashSet的2种排序方法. 1. 把HashSet保存在ArrayList里,再用Collections. ...

  10. 【java】java 分支预测 Java处理排序后的数组比没有排序的快

    1.概述 今天周日,没什么重要的事情要做,于是我早早的就醒来了.看了一会渡边淳一的书,内心逐渐感到平静--心情不佳的时候,书好像是最好的药物.心情平静了,就需要做一些更有意义的事情--逛技术网站,学习 ...

最新文章

  1. 李超线段树(Li-Chao Segment Tree)
  2. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密...
  3. Serious Python
  4. ExtJs+php学习长连接comet技术开端。
  5. 【Android】Android模拟器无法上网问题
  6. 面试官:“同学,你做过真实落地项目吗?”​
  7. 【clickhouse】clickhouse 副本与分片 副本详解
  8. mysql数据库myisam_MySQL数据库修复方法(MyISAM/InnoDB)
  9. Facebook正测试对话式的评论新界面
  10. 基于springboot+vue的医院预约系统(前后端分离)
  11. JavaScript怎么安装_WebStrom 2019安装教程
  12. 天猫商城多幅图片并排展示广告效果,鼠标指向高亮其它阴影
  13. mysql存储过程 插数据_mysql 使用存储过程批量插数据
  14. LVS linux virtual server 章文嵩
  15. 微信小程序休眠setTimeout
  16. 计算机的手机储存在哪里,手机wps文件保存在哪里?
  17. ttkefu如何修改手机聊天窗口的背景颜色?
  18. Vue+Vant制作单选全选全不选以及删除按钮van-checkbox
  19. 「备战春招/秋招系列」程序员的简历就该这样写
  20. PPP中常用定位和误差模型

热门文章

  1. JQ 全选后获取选中的值_JQ完全学习版本
  2. UFLDL教程:Exercise:Softmax Regression
  3. WIX(20121031) 应用设置默认变量
  4. A20 GPIO中断类型差别结果迥异的问题思考
  5. (转).gitignore详解
  6. 解决Warning: Cannot modify header information – headers already sent by
  7. document.getElementsByName 标准
  8. java面向对象:关键字 —(16)
  9. Mysql 如何设置字段自动获取当前时间,附带添加字段和修改字段的例子
  10. python---线程与进程