一.排序算法
1.冒泡排序
public class Test {
public static void main(String[] args) {
int []arr={12,34,1,56,44,4,5,55};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
int temp=arr[j+1];
if(arr[j]>arr[j+1])
{
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
结果:[1, 4, 5, 12, 34, 44, 55, 56]
2.选择排序
//选择排序
public class Selectsorting_Test {
public static void main(String[] args) {
int [] arr={1,34,22,123,8,456};
//控制几轮
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;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
优化:
此方法相当于在一轮中选出一个最小值与当前位置进行比较若小则交换
public class Selectsorting_Test {
public static void main(String[] args) {
int [] arr={1,34,22,123,8,456};
//控制几轮
for (int i = 0; i < arr.length-1; i++) {
//控制每轮选择的次数
int minindex =i;
for (int j = i+1; j < arr.length; j++) {
if(arr[minindex]>arr[j])
{
minindex=j;
}
}
//判断当前位置是否为最小值
//若是才进行交换
if(i!=minindex)
{
int temp=arr[i];
arr[i]=arr[minindex];
arr[minindex]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
}
二.查找算法
二分查找
package com.itheima;
import java.util.Arrays;
import java.util.Scanner;
//二分查找
public class Test3_Binarysearch {
public static void main(String[] args) {
int [] arr ={7,23,79,81,103,127,131,147};
Scanner sc=new Scanner(System.in);
System.out.println(Arrays.toString(arr));
System.out.println("请输入您要查找的数字");
int number=sc.nextInt();
System.out.println(binarysearch(arr, number));
//Java提供的方法
System.out.println(Arrays.binarySearch(arr, 81));
}
public static String binarysearch(int []arr, int data)
{//1.定义两个变量,一个站左边,一个站右边
int left=0;
int right=arr.length-1;
//2.定义一个循环控制折半
while (left<=right)
{
//3.每次折半,都算出中间位置处的索引
int middle=(left+right)/2;
//4.判断当前要找的元素值,与中间位置处的元素值的大小情况
if(data<arr[middle])
{//往左边找,截至位置(右边位置)=中间位置-1
right =middle-1;
}
else if(data>arr[middle])
{//往右边找,截至位置(右边位置)=中间位置+1;
left=middle+1;
}
else {
//中间刚好相等,返回我们要找的索引
return String.valueOf(middle);
}
}
return "数组中没有该数字";
}
}