一些必会的基础算法题 (1)

今天复习了一些基础的算法题,简单记录一下
一 斐波那契数列

/*
Fibonacci指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
 */
public class Fibonaccitest {
    public static void main(String[] args) {
        System.out.println(Fibonacci(5));
    }

    static int Fibonacci(int number){
        if (number<=0){
            return 0;
        }
        if (number==1||number==2){
            return 1;
        }
        int first=1,second=1,third=0;
        for (int i=3;i<=number;i++){
            third = first + second;
            first=second;
            second=third;
        }
        return third;
    }

}

二 十进制数转二进制数

/**
 * 十进制转二进制
 */
public class TestConvert {
    public static void main(String[] args) {
        //给定一个十进制的数
        int n=13;
        //把十进制数转换成二进制
        int t=n;//被除数
        String str="";
        do {
            //除以2求余数
            int mod = t % 2;
            //输出余数
            System.out.println(mod);
            str = mod + str;
            //除以2得到商
            int result = t / 2;
            //使用商除以被除数
            t = result;
            t = t / 2;
        }while (t>0);//商>0
        //输出结果
        System.out.print(n+"--->");
        }
}

三 冒泡排序

import java.util.Scanner;

public class Sort {

    public static void sort(){
        Scanner input= new Scanner(System.in);
        int sort[] =new int[10];
        int temp;
        System.out.print("请输入10个排序的数据:");
        for (int i=0;i

四 快速排序

快速排序的简单介绍
  算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换low和high位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换low和high位置的值,如此往复循环,直到low>=high,然后把基准点的值放到high这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。


import java.util.Arrays;

public class TestQuickSort {
    public static void main(String[] args) {
        //给出无序数组
        int arr[] = {72,6,57,88,60,42,83,73,48,85};
        //输出无序数组
        System.out.println(Arrays.toString(arr));
        //快速排序
        quickSort(arr);
        partition(arr,0,arr.length-1);
        //输出有序数组
        System.out.println(Arrays.toString(arr));

    }
    private static int partition(int[] arr,int low,int high){
        //指定左指针i和右指针j
        int i=low;
        int j=high;
        //将第一个数作为基准值。
        int x=arr[low];
        //使用循环实现分区操作
        while (i=x && i

你可能感兴趣的:(算法,快速排序,数据结构,java)