黑马程序员技术交流社区
标题:
数组的三种排序方法
[打印本页]
作者:
Morrfree
时间:
2015-8-13 22:19
标题:
数组的三种排序方法
public class ArrayMethodDemo {
public static void main(String[] args) {
int[] arr = new int[]{8,6,9,23,47,55,69};
// bubble(arr);
// print(arr);
switchPaiXu(arr);
print(arr);
//二分查找法:通过不断比较中间值进行查找.
int num = 55;
halfSearch(arr,num);
}
private static void halfSearch(int[] arr,int num) {
int start = 0;
int end = arr.length-1;
int mid = (start+end)/2;
//当要查找的数组元素不等于中间索引代表的元素时:
while (num != arr[mid]) {
//当查找的元素值小于中间角标所代表的元素的值时;
if (num < arr[mid]) {
end = mid - 1;
}else{
start = mid + 1;
}
//当查找的元素不存在时,返回-1;
if (start > end) {
System.out.println(-1);
}
mid = (start+end)/2;
}
System.out.println(mid);
}
private static void switchPaiXu(int[] arr) {
//选择排序:每一个数依次和其余的数依次比较
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length-1-i; j++) {
if (arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void bubble(int[] arr) {
//冒泡排序:相邻的两个数之间进行比较
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length-1-i; j++) {
if (arr[i]>arr[j]) {
//用临时变量记录较大的数
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2