package com.heima.sort;
/**
* 冒泡排序法
* 数组元素:{24, 69, 80, 57, 13}
请对数组元素进行排序。
选择排序
*
*/
public class TestSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = new int[] {24, 69, 80, 57, 13};
sort(a);
String s = printArray(a);
System.out.println(s);
}
public static String printArray(int[] a) {
StringBuffer sb = new StringBuffer();
sb.append("a[");
for (int i = 0; i < a.length; i++) {
if(i < a.length - 1) {
sb.append(a[i] + ",");
}
else {
sb.append(a[i]);
}
}
sb.append("]");
return sb.toString();
}
public static void sort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if(a[j] > a[j+1]) {
int b = a[j];
a[j] = a[j + 1];
a[j + 1] = b;
}
}
}
}
}
package com.heima.sort;
/**
*
*数组高级选择排序代码实现
*/
public class TestSort2 {
public static void main(String[] args) {
int[] a = new int[] {24, 69, 80, 57, 13};
selectSort(a);
String s = printArray(a);
System.out.println(s);
}
public static void selectSort(int[] a) {
for (int i = 0; i < a.length -1; i++) {
for (int j = i + 1; j < a.length; j++) {
if(a[i] > a[j]) {
int b = a[i];
a[i] = a[j];
a[j] = b;
}
}
}
}
public static String printArray(int[] a) {
StringBuffer sb = new StringBuffer();
sb.append("a[");
for (int i = 0; i < a.length; i++) {
if(i < a.length - 1) {
sb.append(a[i] + ",");
}
else {
sb.append(a[i]);
}
}
sb.append("]");
return sb.toString();
}
}
二分法查找
package com.heima.find;
/**
案例演示
数组高级二分查找代码
B:注意事项
如果数组无序,就不能使用二分查找。
因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。
*/
public class Test2Find {
public static void main(String[] args) {
int value = 5;
int[] a = new int[] {1,2,3,4,10,15,16,17,18,19,20};
int mid = array2Find(a,value);
System.out.println(mid);
}
public static int array2Find(int[] a, int value) {
int min = 0;
int max = a.length - 1;
int mid = (max + min) / 2;
while(a[mid] != value) {
if(a[mid] < value) {
min = mid + 1;
}
if(a[mid] > value) {
max = mid - 1;
}
if(min > max) {
return -1;
}
mid = (max + min) / 2;
}
return mid;
}
}