java数据结构之常用排序算法
冒泡排序
private void maopao(int arr[]) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
选择排序
private void xuanze(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int min = arr[i];
int x = -1;
boolean b = false;
for (int j = i; j < arr.length; j++) {
if (arr[j] < min) {
b = true;
min = arr[j];
x = j;
}
}
if (b) {
int temp = arr[i];
arr[i] = min;
arr[x] = temp;
}
}
}
插入排序
private void charu(int[] arr2) {
int[] arr = new int[arr2.length];
for (int i = 0; i < arr2.length; i++) {
arr[i] = arr2[i];
for (int j = 0; j < i; j++) {
if (arr[i] >= arr[j] && arr[i] <= arr[j + 1]) {
arr = houyi(arr, j, i);
}
}
}
}
/**
* 指定位置后移
*
* @param arr
* @param j
* @param i
* @return
*/
private int[] houyi(int[] arr, int j, int i) {
int temp = arr[i];
for (int k = i; k > j; k--) {
arr[k] = arr[k - 1];
}
arr[j] = temp;
return arr;
}
希尔排序
/**
* 希尔排序
*
* @param arr
*/
private void xier(int[] arr) {
for (int i = arr.length / 2; i > 0; i = i / 2) {
for (int j = i; j < arr.length; j++) {
for (int k = j - i; k >= 0; k -= i) {
if (arr[k] > arr[i + k]) {
int temp = arr[k];
arr[k] = arr[k + i];
arr[k + i] = temp;
}
}
}
}
}
快速排序
/**
* 快速排序
*
* @param arr
* @param left
* @param right
*/
private void kuaisu(int[] arr, int left, int right) {
int l = left;
int r = right;
int pivot = arr[(left + right) / 2];
int temp = 0;
while (l < r) {
while (arr[l] < pivot) {//寻找左边第一个不小于pivot的索引
l += 1;
}
while (arr[r] > pivot) {//寻找右边第一个不大于pivot的索引
r -= 1;
}
if (l >= r) {
break;
}
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;//左右位置的值互换
if (arr[l] == pivot) {
r -= 1;
}
if (arr[r] == pivot) {
l += 1;
}
}
if (l == r) {
l += 1;
r -= 1;
}
if (left < r) {
kuaisu(arr, left, r);
}
if (right > l) {
kuaisu(arr, l, right);
}
}
基数排序(桶排序)
private static void radix(int[] arr) {
int max=arr[0];
for (int i = 1; i <arr.length ; i++) {
if (arr[i]>max){
max=arr[i];
}
}
int maxleng=(max+"").length();
for (int i = 0,n=1; i <maxleng ;n*=10, i++) {
int[][] arr2=new int[10][arr.length];
int[] indexs=new int[10];
int index=0;
for (int j = 0; j <arr.length ; j++) {
int yushu=arr[j]/n%10;
arr2[yushu][indexs[yushu]]=arr[j];
indexs[yushu]++;
}
for (int j = 0; j <arr2.length ; j++) {
for (int a = 0; a <indexs[j] ; a++) {
arr[index++]=arr2[j][a];
}
}
}
}
java数据结构之常用排序算法的更多相关文章
- (2)Java数据结构--二叉树 -和排序算法实现
=== 注释:此人博客对很多个数据结构类都有讲解-并加以实例 Java API —— ArrayList类 & Vector类 & LinkList类Java API —— BigDe ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- 我们一起来排序——使用Java语言优雅地实现常用排序算法
破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...
- Java常用排序算法及性能测试集合
测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...
- 常用排序算法的总结以及编码(Java实现)
常用排序算法的总结以及编码(Java实现) 本篇主要是总结了常用算法的思路以及相应的编码实现,供复习的时候使用.如果需要深入进行学习,可以使用以下两个网站: GeeksForGeeks网站用于学习相应 ...
- 面试中常用排序算法实现(Java)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
- 常用排序算法java实现
写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
随机推荐
- 安装visualStudio 出现 cant install Microsoft.TeamFoundation.OfficeIntegration.Resources
本文告诉大家在安装 VisualStudio 时出现cant install Microsoft.TeamFoundation.OfficeIntegration.Resources如何安装 如果在安 ...
- 割点(tarjan)
对于根来说,如果它有超过1棵子树,那么它是一个割点 对于非叶结点来说,如果它的某一个儿子没有回边能到达高于它的点,那么它是一个割点 叶节点不是割点 //洛谷3388 #include<algor ...
- H3C 帧中继地址映射
- javaObject类
所有类的公共父类,一旦一个类没有显示地继承一个类则其直接父类一定是Object. 一切数据类型都可用Object接收 class OOXX extends Object{}等价于class ooXX ...
- 蝶式套利(butterfly spread)
多头蝶式套利.预期市场价格趋于稳定,希望在这个价格区间内能获利,可选用多头蝶式套利,以较低的议定价格买进一个看涨期权,又以较高的议定价格买进一个看涨期权,同时又以介于上述2个议定价格之间的中等的议定价 ...
- Spring boot+JPA+Druid
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)
传送门 •题意 有 n 个内存单元(编号从1开始): 给出 4 种操作: (1)Reset :表示把所有的内存清空,然后输出 "Reset Now". (2)New x :表示申请 ...
- linux 后备缓存
一个设备驱动常常以反复分配许多相同大小的对象而结束. 如果内核已经维护了一套相同 大小对象的内存池, 为什么不增加一些特殊的内存池给这些高容量的对象? 实际上, 内核 确实实现了一个设施来创建这类内存 ...
- CF 453C. Little Pony and Summer Sun Celebration
CF 453C. Little Pony and Summer Sun Celebration 构造题. 题目大意,给定一个无向图,每个点必须被指定的奇数或者偶数次,求一条满足条件的路径(长度不超\( ...
- C# dotnet 获取整个局域网的 ip 地址
局域网可以使用的 IP 地址有很多,我写了一段代码用来枚举所有可以用的 ip 地址 小伙伴都知道,局域网可以使用的 IP 范围如下 A类地址:10.0.0.0 - 10.255.255.255 B类地 ...