Java数组算法(二分、冒泡、选择、快排)(java实现数组冒泡排序)

  本篇文章为你整理了Java数组算法(二分、冒泡、选择、快排)(java实现数组冒泡排序)的详细内容,包含有java二维数组的冒泡法排序 java实现数组冒泡排序 java数组排序冒泡法 java数组二分法查找 Java数组算法(二分、冒泡、选择、快排),希望能帮助你了解 Java数组算法(二分、冒泡、选择、快排)。

  时间复杂度:O (logN)

  说明:取数组中间的值和查找值进行比较、如果 中间的值大于要查找的值、则高位索引往中间索引-1、小于则是低位索引往上提、即中间索引+1、一直循环直至找到值、最后没有找到则返回-1

  

/**

 

   * 二分查找法

   * @return 返回查找的索引、没有则返回-1

  public static int binarySearch(int[] arrs, int key) {

   // 定义了低位索引和高位索引

   int lowIndex = 0, highIndex = arrs.length - 1;

   // 一直循环、直至低位索引和高位索引值一致

   while (lowIndex = highIndex) {

   // 取中间索引、即低位索引+高位索引的和除以2、正数右移n位相当于除以2的n次方

   int midIndex = (lowIndex + highIndex) 1,

   midValue = arrs[midIndex];

   if (midValue key)

   highIndex = midIndex - 1;

   else if (midValue key)

   lowIndex = midIndex + 1;

   else

   return midIndex;

   return -1;

  

 

  时间复杂度:O (n)

  

/**

 

   * 冒泡排序

  public static void sort(int[] arr) {

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

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

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

   // 交换

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

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

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

  

 

  时间复杂度:O(n²)

  选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

  

/**

 

   * 选择排序

  public static void sort(int[] arr) {

   // 总共要经过 N-1 轮比较

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

   int min = i;

   // 每轮需要比较的次数 N-i

   for (int j = i + 1; j arr.length; j++) {

   if (arr[j] arr[min]) {

   // 记录目前能找到的最小值元素的下标

   min = j;

   // 将找到的最小值和i位置所在的值进行交换

   if (i != min) {

   arr[i] = arr[i] ^ arr[min];

   arr[min] = arr[i] ^ arr[min];

   arr[i] = arr[i] ^ arr[min];

  

 

  时间复杂度:O(nlogn) 速度最快

  

/**

 

   * 快速排序

   * @param src 数组

   * @param begin 起始索引

   * @param end 尾部索引

  public static void sort(int[] src, int begin, int end) {

   if (begin end) {

   int key = src[begin];

   int i = begin;

   int j = end;

   while (i j) {

   while (i j src[j] key) {

   j--;

   if (i j) {

   src[i] = src[j];

   i++;

   while (i j src[i] key) {

   i++;

   if (i j) {

   src[j] = src[i];

   j--;

   src[i] = key;

   sort(src, begin, i - 1);

   sort(src, i + 1, end);

  

 

  以上就是Java数组算法(二分、冒泡、选择、快排)(java实现数组冒泡排序)的详细内容,想要了解更多 Java数组算法(二分、冒泡、选择、快排)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: