基礎算法學習第二天(冒泡排序、選擇排序、直接插入排序)

冒泡排序思想:
1.將第一個數和第二個數進行比較,將較大的數或者是較小的數向上冒泡,一直進行的不能交換爲止。這裏我們將比較大的數向上浮。
代碼如下,已測。。。

import java.util.Scanner;
import java.util.Arrays;
public class BuddleSort{
    public static void sorts(int[] arr,int a,int b){
        int t;
        t=arr[a];
        arr[a]=arr[b];
        arr[b]=t;
    }
    public static void BuddleSorts(int[] a){
        for(int i=0;i<a.length-1;i++){
            boolean flag=true;
            for(int j=0;j<a.length-1;j++){
                if(a[j]>a[j+1]){
                    sorts(a,j,j+1);
                    flag=false;
                }

            }
            if(flag){//證明沒有進行交換或者交換已經徹底完成
                break;
            }
        }
    }
    public static void main(String[] args){
        int a[] = {0,6,7,2,10,9,3,4,5,1,8 };
        BuddleSorts(a);
        System.out.println(Arrays.toString(a));
    }

}

選擇排序:
1.每一趟確定最小元素通過不斷地比較交換來使得首位置爲當前最小或者最大,直到元素排完。
代碼如下:已測

import java.util.*;
public class SelectSort{
    public static void main(String[] args){
        int a[] = {0,6,7,2,10,9,3,4,5,1,8 };
        selectSort(a);
        System.out.println(Arrays.toString(a));
    }
    public static void swwap(int[] a,int i,int j){
        int t;
        t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
    public static void selectSort(int[] a){
        int len=a.length-1;
        for(int i=0;i<len;i++){
            int min=i;//先將首位設置爲最小座標
            for(int j=i+1;j<len+1;j++){
                if(a[j]<a[min])
                    min=j; //比較之後將小的數的下標設爲min放到首位;
            }
            if(min!=i)//進行交換
                swwap(a,min,i);
        }
    }
}

直接插入排序
1.每次將要插入的數插入到前面已經排好序的隊列中,直到插完所有的元素爲止。
2.如何讓前面的隊列稱爲有序的?讓插入的元素和依次和之前的元素比較, 小就往前走。
代碼如下:已測

import java.util.*;
public class InsertSort{

    public static void main(String[] args){
        int a[] = {0,6,7,2,10,9,3,4,5,1,8 };
        insertSort(a);
        System.out.println(Arrays.toString(a));
    }

    public static void swwap(int[] a,int i,int j){
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
    }

    public static void insertSort(int[] a){

        for(int i=0;i<a.length;i++){
            int j=i;
            while(j>0&&a[j]<a[j-1]){
                swwap(a,j,j-1);
                j--;
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章