这一篇,我将写一下常用的算法
简单二分查找配合冒泡排序(不提倡这两种结合)
复制代码
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65public class 简单算法 { public static void main(String[] args) { /** * 前提条件,我们需要的是将数组进行有序排序,不能是乱序的 */ int arr[] = new int[]{1,2,54,4,64,600,66,74 }; System.out.println("排序前"); for(int ae : arr) { System.out.print( ae + " "); } System.out.println(); Sort(arr); System.out.println("排序后"); for(int ae : arr) { System.out.print( ae + " "); } System.out.println(); //采用的是二分查找 int search = TwoSearch(arr,4); //给定一个数组,要求从数组中查找某个具体的值 System.out.println("输出查到的数值的数组下标位置为"); System.out.println(search); } public static int TwoSearch(int arr[],int data) { //定义两个指针,第一个指向第一个数据和最后一个数据 int left = 0; int right = arr.length - 1; //指向数组的最后一个值 //当两个指针不相等,那么数组就没有被完全遍历完。 while(left <= right) { //我们从中间值开始判断 int mid = (left + right) / 2; if(arr[mid] == data) { //如果中间值数字等于我们想要的那个值 return mid; //直接返回 }else if(arr[mid] < data){ //如果这个数小于我们想要的值,那么说明这个值在右边 left = mid + 1; }else { //否则的话,这个数必定在左边 right = right - 1 ; } } return -1; } //冒泡排序 public static void Sort(int a[]) { //对数组进行有序排序 //先对数组进行排序 for(int i = 0 ; i <a.length ; i++) { for(int j =0; j <a.length - i -1; j++) { int temp = 0; //定义一个存储变量 if(a[j] > a[j+1]) { //判断前后两个数值的大小 temp = a[j +1]; //将后边小的数存到temp中去 a[ j +1 ] = a[j]; //交换两个数值位置 a[j] = temp; } } } } }
结果如下
排序前
1 2 54 4 64 600 66 74
排序后
1 2 4 54 64 66 74 600
输出查到的数值的数组下标位置为
2
最后
以上就是温婉大米最近收集整理的关于冒泡排序+二分查找(不是很推荐使用)的全部内容,更多相关冒泡排序+二分查找(不是很推荐使用)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复