首页 / JAVA / 为混乱带来秩序——Java排序
为混乱带来秩序——Java排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为混乱带来秩序——Java排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3940字,纯文字阅读大概需要6分钟。
内容图文
![为混乱带来秩序——Java排序](/upload/InfoBanner/zyjiaocheng/722/f64f48724958411e97fa26c9ed0e95d9.jpg)
Java中最常用的几种算法如下:
- 选择排序(selection sort)
- 插入排序(insertion sort)
- 冒泡排序(bubble sort)
- 快速排序(quick sort)
- 归并排序(merge sort)
- 桶排序(bucket sort)
具体实现代码如下:
public class NumberSort {
public static void main(String[] args) {
int[] selectionSortvalues = new int[] {9,10,6,5,0,7,8,3,2,4,1};
selectionSort(selectionSortvalues);
int[] insertionSortvalues = new int[] {9,10,6,5,0,7,8,3,2,4,1};
insertionSort(insertionSortvalues);
int[] bubbleSortvalues = new int[] {9,10,6,5,0,7,8,3,2,4,1};
bubbleSort(bubbleSortvalues);
int[] quickSortvalues= new int[] {9,10,6,5,0,7,8,3,2,4,1};
quickSort(quickSortvalues,0,quickSortvalues.length - 1);
System.out.print("\n快速排序:");
printValues(quickSortvalues);
int[] mergeSortvalues= new int[] {9,10,6,5,0,7,8,3,2,4,1};
mergeSort(mergeSortvalues,0,mergeSortvalues.length - 1);
System.out.print("\n归并排序:");
printValues(mergeSortvalues);
int[] BucketSortvalues= new int[] {9,10,6,5,0,7,8,3,2,4,1};
BuckeSort(BucketSortvalues,10);
System.out.print("\n桶 排序:");
printValues(BucketSortvalues);
}
/**
* 选择排序
* @param values
*/
public static void selectionSort(int[] values) {
System.out.print("选择排序:");
if (values.length <= 1)
return;
int k,minIndex;
for (int i = 0; i < values.length; i++) {
minIndex = i;
for (k = i + 1; k < values.length; k++)
if (values[k] < values[minIndex])
minIndex = k;
int temp = values[minIndex];
values[minIndex] = values[i];
values[i] = temp;
}
printValues(values);
}
/**
* 插入排序
* @param values
*/
public static void insertionSort(int[] values) {
System.out.print("\n插入排序:");
if (values.length <= 1)
return;
int k,value;
for (int i = 1; i < values.length; i++) {
value = values[i];
k = i - 1;
while(k >= 0 && values[k] > value) {
values[k + 1] = values[k];
k = k - 1;
}
values[k + 1] = value;
}
printValues(values);
}
/**
* 冒泡排序
* @param values
*/
public static void bubbleSort(int[] values) {
System.out.print("\n冒泡排序:");
boolean swapped;
for (int i = 0; i < values.length; i++) {
swapped = false;
for (int j = values.length - 1; j > i; j--) {
if (values[j] < values[j - 1]) {
int temp = values[j];
values[j] = values[j - 1];
values[j - 1] = temp;
swapped = true;
}
}
if(swapped == false)
break;
}
printValues(values);
}
/**
* 快速排序
* @param values
* @param low
* @param hight
*/
public static void quickSort(int[] values,int low,int hight) {
/*
* int low = 0; int hight= values.length - 1;
*/
if (low < hight) {
int index = partition(values, low, hight);
quickSort(values,low, index - 1);
quickSort(values, index + 1, hight);
}
}
public static int partition(int[] values,int low,int hight) {
int privote = values[hight];
int i = low - 1;
for (int j = low; j <= hight - 1; j++) {
if(values[j] <= privote) {
i ++;
int temp = values[i];
values[i] = values[j];
values[j] = temp;
}
}
i ++;
int temp = values[i];
values[i] = values[hight];
values[hight] = temp;
return i;
}
public static void mergeSort(int[] values,int left,int right) {
if (left == right)
return;
if(left < right) {
int middle = (left + right) / 2;
mergeSort(values,left,middle);
mergeSort(values, middle + 1, right);
int[] temp = new int[values.length];
for (int i = left; i <= right; i++) {
temp[i] = values[i];
}
int index1 = left;
int index2 = middle + 1;
for (int i = left; i <= right; i++) {
if(index1 == middle + 1)
values[i] = temp[index2 ++];
else if(index2 > right)
values[i] = temp[index1 ++];
else if(temp[index1] < temp[index2])
values[i] = temp[index1 ++];
else
values[i] = temp[index2 ++];
}
}
}
/**
* 桶排序
* @param buckeSortvalues
* @param i
*/
private static void BuckeSort(int[] values, int maxVal) {
int[] bucket = new int[maxVal + 1];
int num = values.length;
int bucketNum = bucket.length;
for (int i = 0; i < bucketNum; i++) {
bucket[i] = 0;
}
for (int i = 0; i < num; i++) {
bucket[values[i]] ++;
}
int pos = 0;
for (int i = 0; i < bucketNum; i++) {
for (int j = 0; j < bucket[i]; j++) {
values[pos ++] = i;
}
}
}
public static void printValues(int[] values) {
for (int i = 0; i < values.length; i++) {
System.out.print(values[i] + ",");
}
}
}
如有兴趣,请添加QQ群716106908交流。
内容总结
以上是互联网集市为您收集整理的为混乱带来秩序——Java排序全部内容,希望文章能够帮你解决为混乱带来秩序——Java排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。