数组常用算法

数组常用算法

数组的常用查找和排序算法

线性查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//线性查找:
String dest = "BB";
dest = "CC";

boolean isFlag = true;

for(int i = 0;i < arr.length;i++){

if(dest.equals(arr[i])){
System.out.println("找到了指定的元素,位置为:" + i);
isFlag = false;
break;
}

}
if(isFlag){
System.out.println("很遗憾,没有找到的啦!");

}

二分法查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//二分法查找:
//前提:所要查找的数组必须有序。
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};

int dest1 = -34;
dest1 = 35;
int head = 0;//初始的首索引
int end = arr2.length - 1;//初始的末索引
boolean isFlag1 = true;
while(head <= end){

int middle = (head + end)/2;

if(dest1 == arr2[middle]){
System.out.println("找到了指定的元素,位置为:" + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle - 1;
}else{//arr2[middle] < dest1
head = middle + 1;
}


}

if(isFlag1){
System.out.println("很遗憾,没有找到的啦!");
}

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
//冒泡排序
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;
}
}
}
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t");
}

快速排序(sort排序)

要想对数值型数组进行快速排序, 可以使用 Arrays 类中的 sort 方法:

1
2
int[] a = new int[10000];
Arrays.sort(a)

这个方法使用了优化的快速排序算法。快速排序算法对于大多数数据集合来说都是效率比较
高的

抽彩游戏中的随机数值组合,假如抽彩是从 49 个数值中抽取 6 个,那么程序可能的输出结果为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   import java.util.Arrays;
import java.util.Scanner;

public class shuzu {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("你想要从多少个数里面抽? ");
int n = in.nextInt();
System.out.println("你想要抽几个数?");
int k =in.nextInt();
int[] number = new int[n];
for(int i=0;i<number.length;i++){
number[i]=i+1;
}
int[] result = new int[k];
for (int i=0;i<result.length;i++){
int r=(int)(Math.random()*n);
result[i]=number[r];
number[r]=number[n-1];
n--;
System.out.println(n);
}
Arrays.sort(result);
System.out.println("Bet the following combination. I");
for(int r:result)
System.out.println(r);

}
}

评论 (tip: 昵称框输入QQ号即可评论)

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×