21xrx.com
2024-09-17 04:17:17 Tuesday
登录
文章检索 我的文章 写文章
Java中常用的算法及示例
2023-06-15 13:51:37 深夜i     --     --
Java

Java是一种优秀的编程语言,其内置了许多功能强大的算法,可以方便开发者实现各种数据处理和计算。本文将介绍Java中常用的算法及示例。

1. 排序算法

1.1 冒泡排序

冒泡排序是一种基础的排序算法,其核心思想是比较相邻两个元素的大小关系,如果前一个元素大于后一个元素就交换它们的位置,反之则不交换。重复这个过程直到所有元素都排好位置。

示例代码:


public static void bubbleSort(int[] arr) {

  int length = arr.length;

  for (int i = 0; i < length - 1; i++) {

    for (int j = 0; j < length - i - 1; j++) {

      if (arr[j] > arr[j + 1]) {

        int temp = arr[j];

        arr[j] = arr[j + 1];

        arr[j + 1] = temp;

      }

    }

  }

}

1.2 快速排序

快速排序也是一种常用的排序算法,其核心思想是选择一个基准数,将数组按照基准数分为两部分,一部分比基准数小,另一部分比基准数大,再分别对这两部分进行递归排序,直到最后排序完成。

示例代码:


public static void quickSort(int[] arr, int left, int right) {

  if (left < right) {

    int i = left;

    int j = right;

    int pivot = arr[left];

    while (i < j) {

      while (i < j && arr[j] >= pivot)

        j--;

      

      arr[i] = arr[j];

      while (i < j && arr[i] <= pivot) {

        i++;

      }

      arr[j] = arr[i];

    }

    arr[i] = pivot;

    quickSort(arr, left, i - 1);

    quickSort(arr, i + 1, right);

  }

}

2. 查找算法

2.1 二分查找

二分查找是一种高效的查找算法,其核心思想是将一个有序数据集合进行分割,取中间位置的值进行比较,如果该值大于查找的值,就在左边继续查找,反之在右边查找,重复这个过程直到找到对应的元素。

示例代码:


public static int binarySearch(int[] arr, int target) {

  int left = 0;

  int right = arr.length - 1;

  while (left <= right) {

    int mid = (left + right) / 2;

    if (arr[mid] == target)

      return mid;

     else if (arr[mid] < target) {

      left = mid + 1;

    } else

      right = mid - 1;

    

  }

  return -1;

}

2.2 哈希表

哈希表是一种高效的存储和查找数据的数据结构,其核心思想是通过哈希函数将关键词直接映射到存储位置,然后在该位置进行查找。

示例代码:


public class HashTable {

  private int size;

  private LinkedList [] table;

  public HashTable(int size) {

    this.size = size;

    this.table = new LinkedList[size];

    for (int i = 0; i < size; i++) {

      table[i] = new LinkedList<>();

    }

  }

  public void put(int key, int value) {

    int hash = key % size;

    ListIterator iterator = table[hash].listIterator();

    while (iterator.hasNext()) {

      Node node = iterator.next();

      if (node.key == key)

        node.value = value;

        return;

      

    }

    table[hash].add(new Node(key, value));

  }

  public int get(int key) {

    int hash = key % size;

    ListIterator iterator = table[hash].listIterator();

    while (iterator.hasNext()) {

      Node node = iterator.next();

      if (node.key == key)

        return node.value;

      

    }

    return -1;

  }

  public void remove(int key) {

    int hash = key % size;

    ListIterator iterator = table[hash].listIterator();

    while (iterator.hasNext()) {

      Node node = iterator.next();

      if (node.key == key) {

        iterator.remove();

        return;

      }

    }

  }

  private static class Node {

    int key;

    int value;

    public Node(int key, int value)

      this.key = key;

      this.value = value;

    

  }

}

3个 算法, 排序

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复