12-03 Java语言基础(数组排序 & 二分查找)
发布日期:2021-05-06 23:59:38 浏览次数:24 分类:技术文章

本文共 1807 字,大约阅读时间需要 6 分钟。

冒泡排序

思想:

1、两两比较,如果前面的数比后面的数大,就交换。经过一轮后,最大的数就在最后面了。2、经过 n - 1 轮后,排序完成

代码:

public class Demo1_Sort {
public static void main(String[] args) {
//冒泡排序 int[] arr = {
11, 22, 15, 9}; BubbleSort(arr); for(int a : arr) {
System.out.print(a + " "); } } public static void BubbleSort(int[] arr) {
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 1; j < arr.length - i; j++) {
if(arr[j - 1] > arr[j]) {
int temp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = temp; } } } }}

输出:

9 11 15 22

选择排序

思想:

1、用一个索引位置上的元素,依次与其它索引位置上的元素比较,小的在前面,大的在后面。2、比较n - 1 次即可

代码:

public class Demo2_Sort {
public static void main(String[] args) {
//选择排序 int[] arr = {
11, 22, 9, 0, -5, 56, 100}; selectSort(arr); for(int a : arr) {
System.out.print(a + " "); } } private static void selectSort(int[] arr) {
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; } } } }}

输出:

-5 0 9 11 22 56 100

二分查找

二分查找的前提:数组有序!!

思想:

每次找最中间的值,不管大了还是小了,都会砍掉一半的数,缩小查找范围

代码:

import com.heima.sort.*;public class Demo1_Search {
public static void main(String[] args) {
//二分查找 int[] arr = {
11, 23, 0, -5, 98, 45, 22}; Demo1_Sort.BubbleSort(arr); for(int a : arr) {
System.out.print(a + " "); } System.out.println(); System.out.println(binarySearch(arr, 98)); } private static int binarySearch(int[] arr, int num) {
int left = 0; int right = arr.length - 1; int mid; while(left <= right) {
mid = (left + right) / 2; if(arr[mid] > num) {
right = mid - 1; }else if(arr[mid] < num) {
left = mid + 1; }else {
return mid; } } return -1; }}

输出:

-5 0 11 22 23 45 98 6
上一篇:12-04 Java语言基础(Arrays类)
下一篇:12-02Java语言基础(StringBuffer(2))

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月26日 21时28分17秒