Java 常用排序,习惯规则的使用“从小到小”后者从“从大到小”进行数组的相关排序!为了方面应用直接采取工具类的方式来抽取相关方法。
以下列出常用的排序方式:
需要补充说明的是:排序是一种算法,希尔排序是排序最快的,运算最快的,效率最高的!
public class SortOperation {
/**
* 选择排序
* 拿到数组的第0个元素,依次为之后的元素进行对比
* 第一次排序结束之后,拿数组的第1个元素依次对比(第0个元素除外)
* @param data
*/
public void selectSort(int[] data) {
for (int i = 0; i < data.length - 1; i++) {
for (int j = i + 1; j < data.length; j++) {
if (data[i] > data[j]) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
System.out.println("选择排序的结果值:");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + "、");
}
}
/**
* 冒泡排序
*
* @param data
*/
public void bubbleSort(int[] data) {
for (int i = 0; i < data.length - 1; i++) {
for (int j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
System.out.println("冒泡排序的结果值:");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + "、");
}
}
/**
* 折半查找法
*
* @param key
* @param data
*/
public static int biSearch(int key, int[] data) {
int start = 0;
int end = data.length - 1;
int center = (start + end) >> 1; // ">>1" 代表 "/2"
while (data[center]!= key) {
if (key > data[center]) {
start = center + 1;
} else if (key < data[center]) {
end = center - 1;
}
if (start > end) { // key 大于 数组中的任何一个 元素的时候,使用 -1 来标示
return -1;
}
center = (start + end) >> 1;
}
return center;
}
}
/**
*测试类
*/
public class MyClass {
private static int []data = {5, 3, 4, 1, 0, 2, 12,};
private static int b[] = {1, 3, 4, 45, 50, 52, 62,};
public static void main(String args[]) {
SortOperation operation = new SortOperation();
// operation.selectSort(data);
operation.bubbleSort(data);
int index = operation.biSearch(320,b);
System.out.println("下标:"+index);
}
}