算法
冒泡排序
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {9, 5, 4, 60, 21, 3, 58};
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
//arr[j]和arr[j+1]交换位置
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//输出结果
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
选择排序
public class SelectSort {
public static void main(String[] args) {
int arr[] = {9, 5, 4, 60, 21, 3, 58};
for (int i = 0; i <arr.length-1 ; i++) {
//假设起点i下标的元素是最小值
int min=i;
for (int j = i+1; j <arr.length; j++) {
if (arr[j]<arr[min]){
min=j; //更新最小元素下标
}
}
if (min!=i){
//当min和i相等,表示假设是对的,i下标元素是最小值
//当i和min不相等时,表示猜测是错的,有比i下标元素更小的值
int temp;
temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
}
//排序之后排列
for (int i = 0; i <arr.length ; i++) {
System.out.println(arr[i]);
}
}
}
二分查找法
public class BinarySearch {
public static void main(String[] args) {
int[] arr={1,2,5,30,55,66,85};
//找出元素值为55的下标
int index=test(arr,55);
System.out.println("该元素下标是:"+index);
}
/**
* 从数组中查找目标元素的下标
* @param arr 被查找的数组(这个必须是已经排序过的)
* @param dest 目标元素
* @return -1表示该元素不存在,其他表示返回该元素的下标
*/
private static int test(int[] arr, int dest) {
//开始下标
int begin=0;
//结束下标
int end=arr.length-1;
//开始元素的下标只要在结束元素下标的左边,就可以循环
while (begin<=end){
//中间元素下标
int mid=(begin+end)/2;
if (arr[mid]==dest){
return mid; //该元素的下标是
}else if (arr[mid]<dest){
//目标在"中间的"右边
//开始元素下标需要发生变化(开始的下标需要重新赋值)
begin=mid+1;
}else {
//arr[mid]>dest
//目标元素在"中间"的左边
//修改结束元素的下标
end=mid-1;
}
}
return -1;
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!