package com.heima.se;
/*
数组的几种排序算法总结
*/
public class Demo13_Array {
public static void main(String[] args) {
int[] arr = {83,23,22,34,1,343,2};
change(arr);
System.out.println("冒泡排序的结果为:");
print(arr);
System.out.println("\r\n选择排序的结果为:");
selectSort(arr);
print(arr);
int birnary = birnary(arr,23);
System.out.println("\r\n二分查找的索引为:" + birnary);
}
/**
* 这个是使用二分查找进行的排序,二分查找排序的前提是必须先对数组进行排序。
* @param arr
* @param value
* @return
*/
private static int birnary(int[] arr, int value) {
int min = 0;
int max = arr.length - 1;
int mid = (min + max) >>> 1; // 相当于 (min + max) / 2
while(arr[mid] != value) {
if(arr[mid] > value) {
max = mid - 1;
} else if(arr[mid] < value) {
min = min + 1;
}
mid = (min + max) >>> 1;
if(min > max) {
return -1;
}
}
return mid;
}
/**
* 选择排序:选择排序就是选择一个元素与其他的元素依次进行比较,这样比较完一轮后出来一个最小值
* @param arr
*/
private static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
/**
* 冒泡排序:两个相邻的元素进行比较,经过一轮后比较出来一个最大的值,一共比较数组的长度减1次
* @param arr
*/
private static void change(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
···
数组的几种排序算法
最新推荐文章于 2024-07-02 18:15:37 发布