目录
一、Java数组的查找
1.线性查找代码实现
(使用到了String类的功能:.equals())
public class LinearSearch {
public static void main(String[] arg){
String[] profession = new String[]{"mage","warrior","hunter","priest","rogue"};
boolean seFlag = false;
String select = "mage";
//select = "warlock";
for(int i =0 ; i < profession.length ; i++){
if(select.equals(profession[i])){
System.out.println("已选择职业:" + i + ":" +profession[i]);
seFlag = true;
break;
}
}
if(seFlag == false)
System.out.println("该职业不可选!");
}
}
2.运行线性查找代码输出结果
输出结果1)
输出结果2)
3.二分法查找(基于排序):
代码实现 1)
public class BinarySearch {
public static void main(String[] args) {
//定义一个数组
int[] score = new int[]{102,320,1000,7998,10248,12340,12588};
//定义三个工具变量
int start = 0;
int end = score.length -1;
int mid;
//使用二分法查找
boolean deFlag = false; //是否找到,找到为true,未找到到为false
int dest = 1001;//要查找的目标值
while(start != end){
mid = (start + end) / 2;
if(score[mid] != dest){
if(score[mid] > dest){
end = mid -1; //缩小查找范围,去除当前范围后半部分
}else{
start = mid + 1; //缩小查找范围,去除当前范围前半部分
}
continue; //未找到目标时跳转到循环开头
}
deFlag = true;
System.out.println("目标" + dest +"已在" + mid +"找到");
break; //目标已找到,退出循环
}
if(deFlag == false){
System.out.println("目标不存在!");
}
}
}
输出结果1)存在于数组中的值
输出结果2)不存在于数组中的值
二、Java数组的排序
排序的额外要求:稳定性(对于同大小的元素保留原有前后顺序)
1.冒泡排序(包含交换算法)
代码实现:
public class BubbleSort {
public static void main(String[] arg){
//定义一个数组
int[] score = new int[]{1688,588,9988,20,2500,6500,198};
//使用for循环进行冒泡排序(从小打到)
for(int i = 0 ; i < score.length -1 ; i++){
for(int j = 0 ; j < score.length -1 - i ; j++){
if(score[j] > score[j+1]){
int temp = score[j];
score[j] = score[j+1];
score[j+1] = temp;
}
}
}
//输出排序后的结果
System.out.println("从小到大排序:");
for(int i = 0 ; i < score.length ; i++){
System.out.print(score[i] + "\t");
}
}
}
输出结果:
2.快速排序
1)整体思路:
选择一个数组中的元素作为基准,大于基准的数放右边,小于基准的数放左边。再分别对数组左右两边的部分重复上面的操作,直到无法再分。
2)实现按基准元素左右划分:
定义两个变量作为移动标签:low、high
low从左往右移动,所处的变量大于基准时停下;high从右往左移动,所处变量小于基准时停下。当两个移动标标签都停下时,交换两标签所在位置的元素。直到low标签移动到high标签的右边时停止操作。此时将基准元素与high标签位置的元素交换位置。
到这时,基准左边的元素都是小于基准的,而基准右边的元素都是大于基准的。
-------------------------------------------完结✿✿ヽ(°▽°)ノ✿-----------------------------------------------
谢谢观看!
欢迎评论!