1. 程式人生 > >排序演算法:選擇排序,直接插入排序,氣泡排序

排序演算法:選擇排序,直接插入排序,氣泡排序

package com.Algorithm.Search_Sort;

import java.util.Arrays;

public class Sort {
	
	public int array[] = {99,34,76,92,34,17,77,41,40,36,6};
	
	//氣泡排序法:比較條件為array[j]>array[j+1]為穩定排序,比較條件為array[j]>=array[j+1]為不穩定排序
	public void BubbleSort(){
		//進行N-1輪
		for(int i=0;i<array.length-1;i++){
			//每輪進行N-1-i次比較
for(int j=0;j<array.length-1-i;j++) if(array[j]>array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } System.out.println("氣泡排序法:"+Arrays.toString(array)); } //選擇排序法:不穩定的排序方法 public void SelectSort(){ // for(int i=0;i<array.length-
1;i++){ //假設每輪的第一個數是待排序列的最小值,記錄最小值的陣列下標 int minIndex=i; //從待排陣列中找到最小值,記錄真正最小值下標 for(int j=i+1;j<array.length;j++){ if(array[j] < array[minIndex]){ minIndex=j; } } //原第一個 與 最小值 交換位置 int temp=array[i]; array[i]=array[minIndex]; array[minIndex]=temp; } System.
out.println("選擇排序法:"+Arrays.toString(array)); } //插入排序法:穩定排序 public void InsertSort(){ //進行N-1輪 for(int i=1;i<array.length;i++){ //記錄下當前要插入的數及其下標 int temp=array[i]; int j=i; //從最後一位開始,然後與其前面一位做比較,如果比其小,就覆蓋 while(j<0 && temp<array[j-1]){ array[j]=array[j-1]; j--; } } System.out.println("插入排序法:"+Arrays.toString(array)); } //三種列印int陣列的方法 public void print(){ //Arrays工具類中toString靜態方法遍歷 System.out.println(Arrays.toString(array)); //正常for迴圈遍歷 for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } //foreach語句遍歷 for(int j:array){ //這裡的j不再是下標的意思,而是array中遍歷取出的每個數 //如果輸出array[j],大概率會出現陣列越界的錯誤 System.out.print(j+" "); } } public static void main(String[] args) { Sort sort=new Sort(); sort.BubbleSort();//氣泡排序法 sort.SelectSort();//選擇排序法 sort.InsertSort();//插入排序法 } }

輸出結果