1. 程式人生 > 實用技巧 >一些簡單的入門演算法

一些簡單的入門演算法

package com.study.algorithm;

import java.util.Scanner;

public class BinarySearch {
    public static void main(String[] args) {
       /* System.out.println("請輸入排序陣列:");
        int array[] = new int[10];

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < array.length; i++) {
            array[i] = sc.nextInt();
        }
*/ int[] array = new int[]{25, 84, 455, 885, 4459, 6215, 244, 443, 4457, 1440}; int a = BinarySearch(array, 10); System.out.println("數字下標是:" + a); } /** * 二分法查詢 * * @param array int陣列 * @param item 要查詢的數字 * @return 如果找到返回對應的下標, 下標從1開始。否則返回0
*/ private static int BinarySearch(int[] array, int item) { //arrayays.sort(arrayay); //BubbleSort(array); //quickSort(array,0,array.length-1); doarrayertSort(array); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }
int low = 0; int high = array.length - 1; while (low <= high) { int mid = (low + high) / 2; if (item == array[mid]) { return mid; } else if (item < array[mid]) { high = mid - 1; } else { low = mid + 1; } } return 0; } /** * 選擇排序 * * @param arrayay */ private static void sort(int[] arrayay) { for (int i = 0; i < arrayay.length; i++) { for (int j = i + 1; j < arrayay.length; j++) { if (arrayay[i] > arrayay[j]) { int temp = arrayay[i]; arrayay[i] = arrayay[j]; arrayay[j] = temp; } } } } /** * 氣泡排序 * * @param array */ private static void BubbleSort(int[] array) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - i - 1; j++) { //每次比較都會確定一個最小數,所以j < array.length-1-i if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } /** * 快速排序 * * @param arr */ private static void quickSort(int[] arr,int low,int high) { // int low = 0; // int high = arr.length - 1; if(low>high){ return; } int i, j, temp, t; i = low; j = high; //temp就是基準位 temp = arr[low]; while (i < j) { //先看右邊,依次往左遞減 while (temp <= arr[j] && i < j) { j--; } //再看左邊,依次往右遞增 while (temp >= arr[i] && i < j) { i++; } //如果滿足條件則交換 if (i < j) { t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } //最後將基準為與i和j相等位置的數字交換 arr[low] = arr[i]; arr[i] = temp; //遞迴呼叫左半陣列 quickSort(arr, low, j - 1); //遞迴呼叫右半陣列 quickSort(arr, j + 1, high); } /** * 插入排序 * @param array */ private static void doarrayertSort(int[] array){ for(int i=1; i<array.length; i++){ for(int j=i; j>0; j--){ if(array[j]<array[j-1]){ int temp = array[j-1]; array[j-1] = array[j]; array[j] = temp; } } } } }