01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)

Java的经典排序--选择排序--冒泡排序--折半查找

选择排序

选择排序 3 2 1 5 8
0 1 3 2 5 8
1 1 2 3 5 8
2 1 2 3 5 8
3 1 2 3 5 8
public static void main(String[] args)  {
  int[] arr={3,2,1,5,8};
  selectSort(arr);
  for(int i = 0 ; i < arr.length ; i ++){
    System.out.println(arr[i]) ;
  }
}
//选择排序
    public 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 ;
                }
            }
        }
    }

冒泡排序(大数下沉)

冒泡排序 3 2 1 5 8
0 2 1 3 5 8
1 1 2 3 5 8
2 1 2 3 5 8
3 1 2 3 5 8
public static void main(String[] args)  {
  int[] arr={3,2,1,5,8};
  bubbleSort(arr);
  for(int i = 0 ; i < arr.length ; i ++){
    System.out.println(arr[i]) ;
  }
}
   //冒泡排序大数下沉
    public static void bubbleSort(int[] arr){
        //需要比较多少轮
        for(int i = 0 ; i < arr.length - 1 ; i ++){
            //每一轮需要比较多少次
            for(int j = 0 ; j < arr.length - 1 - 1; j ++){
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j] ;
                    arr[j] = arr[j + 1] ;
                    arr[j + 1] = temp ;
                }
            }
        }
    }

折半查找

折半查找 3 2 1 5 8
3 1 2 3 5 8
public static void main(String[] args)  {
        int index = binarySearch(arr , 9);
        System.out.println(index) ;
}
  //折半查找
    public static int binarySearch(int[] arr , int n){
        int start = 0 ;//起始值
        int end = arr.length - 1 ;//末尾值
        while(start <= end){
           //中间那个值
            int mid = (start + end) / 2 ;
            if(arr[mid] ==n){
                return mid ;
            }
            //值如果在左边
            else if(arr[mid] > n ){
                end = mid - 1 ;
            }
            //值在右边
            else{
                start = mid + 1 ;
            }
        }
        //没有值则返回一个空的
        return -1 ;
    }

原文地址:https://www.cnblogs.com/SteveDZC/p/9751629.html

时间: 2024-10-18 12:18:19

01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)的相关文章

算法大神之路----排序(选择排序法)

选择排序法,顾名思义,就是把特定的数据选择出来进行排序. 选择排序法有两种方式 在所有的数据中,当由大到小排序,那么就将最大值放到第一个位置 如果由小到大排序,那么就将最小值放到第一个位置 以由小到大排序举例,当排序时候,扫描整个数据,拿第一个依次与其他做比较,如果其他数据比第一个大,或者相等,那么就不交换,如果其他数据比第一个数小,那么就交换二者的位置,扫描结束后,则从第二个数开始,依次扫描. 方法分析 无论是最坏还是最好情况,甚至是平均情况下,都需要对全部数据进行扫描,找到最大或最小值,因此

【从零学习经典算法系列】分治策略实例——二分查找

1.二分查找算法简介 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法.搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组 为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半.折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn). 二分查找的优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且

java冒泡算法和选择排序法

1 package test.auto; 2 3 import java.util.Arrays; 4 5 import org.apache.bcel.generic.FieldGenOrMethodGen; 6 7 public class Maopao0807{ 8 9 public static void main(String[] args) { 10 //冒泡,每个相邻进行比较 11 int a[]={ 6, 5, 3, 1, 8, 7, 2, 4 , 0}; 12 for (int

java基础算法之选择排序

选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 时间复杂度  选择排序的交换操作介于 0 和 (n - 1) 次之间.选择排序的比较操作为 n (n - 1) / 2 次之间.选择排序的赋值操作介于 0 和 3 (n - 1) 次之间.比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(

Java实现算法之--选择排序

选择排序也是比较简单的一种排序方法,原理也比较容易理解,它与冒泡排序的比较次数相同,但选择排序的交换次数少于冒泡排序.冒泡排序是在每次比较之后,若比较的两个元素顺序与待排序顺序相反,则要进行交换,而选择排序在每次遍历过程中只记录下来最小的一个元素的下标,待全部比较结束之后,将最小的元素与未排序的那部分序列的最前面一个元素交换,这样就降低了交换的次数,提高了排序效率. 看一下实现代码: public class ChoiceSort { public static void _choiceSort

java语言之数组-----选择排序

1. 数组的基本知识:数组是用来存储变量的集合 2. 数组的声明格式:元素类型 [] 数组引用变量名 = new 元素类型[元素个数] 如: int [] arrary = new int [10]  声明并创建一个具有int类型的10个元素  arrary 是一个含有十个int 类型的元素数组的引用变量 3. 数组初始化: int [] arrary = new int [] {1,2,3,4,56,7}; 或        int [] arrary = new int [6]; arrar

排序——选择排序(java描述)

百度百科的描述如下:选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到全部待排序的数据元素排完. 选择排序是不稳定的排序方法. public class Sorting { public static void main(String[] args) { int[] a = { 6, 2, 5, 3,

Java数据结构之排序---选择排序

简单选择排序的介绍: 从给定的序列中,按照指定的规则选出某一个元素,再根据规定交换位置后达到有序的目的. 简单选择排序的基本思想: 假定我们的数组为int [] arr = new int[n],第一次我们从arr[0]~arr[n-1]中选择出最小的值与arr[0]交换.第二次我们从arr[1]~arr[n-1]中选择出最小的值与arr[1]交换.第三次我们从arr[2]~arr[n-1]中选择出最小的值与arr[2]交换,...,第i次我们从arr[i-1]~arr[n-1]中选择出最小的值

数据结构排序-选择排序

选择排序中的两个经典算法:简单选择排序,堆排序. 简单选排:通过n-1次数据元素的比较,从n-i+1个记录中选择最小的数据,并与第i个数据进行交换,它的时间复杂度是O(n^2). 堆排序:利用堆的特征进行排序,复杂度为O(n*logn). 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int n; 5 6 /* 7 * 选择排序 8 */ 9 void SelectSort(int *array) 10 { 11 int i, j,