Javaデータ構造とアルゴリズム分析-バブルソート


著作権表示

  • この記事の原作者:コロンビアバレーの弟
  • 著者のブログアドレス:http://blog.csdn.net/lfdfhl

原理分析

順序付けられていない配列{1,9,7,5,3}があります。バブルソートを使用して、配列を小さいものから大きいもの(大きいものから小さいもの)に並べ替えてください。

最初の旅行:合計5つの数字を4回比較すると、プロセスは次のようになります
。1と9、9の方が大きく、位置は変更されないため、まだ1,9,7,5,3
9と7、9の方が大きいため、変更する必要があります位置、9と7のスワップ1,7,9,5,3
9と5の比率、9が大きい、位置を変更する必要がある、9と5のスワップ1,7,5,9,3
9と3の比率、9が大きい、変更する必要があるポジション、9と3のスワップ1,7,5,3,9

2回目:1、7、5、3、9を3回比較すると、プロセスは次のようになります。1と7、7の方
が大きく、位置を変更する必要がないため、1、7、5、3、9、7、5の
比率のままです。 7が大きいので位置を変える必要があるので1,5,7,3,9になります
7が3より大きいので7が大きいので位置を変える必要があるので1,5,3,7,9になります

3回目のラウンド:1,5,3,7,9を2回比較すると、プロセスは次のようになります
。1と5の比率、5の方が大きく、位置を変更する必要がないため、1,5,3,7,9の
5と3の比率のままです。 5大きく、位置を変える必要があり、1,3,5,7,9になる

第4ラウンド:1、3、5、7、9を1回比較、プロセスは次のとおりです
。1を3と比較し、3が大きく、位置を変更する必要がないため、1、3、5、7、9のままです。

概要:

  • 1.配列内の5つの数値、5-1 = 4回比較
  • 2.各旅行を何回比較しましたか?パスの数+このパスで比較された回数=配列内の要素の数
  • 3.毎回比較し、最大値を比較して最後に置きます
  • 4.各比較では、2つの数値がペアで比較され、位置を逆にする必要がある場合があります

コード

バブルソートのコードは次のように実装されています。

package com.algorithm;
/**
 * 本文作者:谷哥的小弟 
 * 博客地址:http://blog.csdn.net/lfdfhl
 */
public class BubbleSort {
    
    

	public static void main(String[] args) {
    
    
		int[] intArray = {
    
    11, 99, 77, 5, 0, -1};
		printArray(intArray);
		System.out.println();
		bubble(intArray);
	}

	public static void bubble(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length - 1; i++) {
    
    
			for (int j = 0; j < intArray.length - 1 - i; j++) {
    
    
				if (intArray[j] > intArray[j + 1]) {
    
    
					swap(intArray, j, j + 1);
				}
			}
		}
		printArray(intArray);
	}
	
	//打印数组
	public static void printArray(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length; i++) {
    
    
			System.out.print(intArray[i] + " ");
		}
	}
	
	//交换数组中的元素
	public static void swap(int[] intArray, int i, int j) {
    
    
		int temp = 0;
		temp = intArray[i];
		intArray[i] = intArray[j];
		intArray[j] = temp;
	}

}

運用結果

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/lfdfhl/article/details/109320033