摘要:演示動圖演示具體過程代碼常規(guī)優(yōu)化歸納排序方法時間復雜度最壞時間復雜度最好空間復雜度穩(wěn)定性冒泡排序穩(wěn)定總結代碼簡介但低效,僅用于入門。參考十大經典排序算法冒泡排序
1.算法描述
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后的元素會是最大的數。
針對所有的元素重復以上的步驟,除了最后一個。
持續(xù)每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
2.演示 2.1動圖演示 2.2具體過程 3.代碼 3.1常規(guī)// Java program for implementation of Bubble Sort
class BubbleSort
{
void bubbleSort(int arr[])
{
int n = arr.length;
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1])
{
// swap arr[j+1] and arr[i]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
/* Prints the array */
void printArray(int arr[])
{
int n = arr.length;
for (int i=0; i
3.2優(yōu)化
// Optimized java implementation
// of Bubble sort
import java.io.*;
class GFG
{
// An optimized version of Bubble Sort
static void bubbleSort(int arr[], int n)
{
int i, j, temp;
boolean swapped;
for (i = 0; i < n - 1; i++)
{
swapped = false;
for (j = 0; j < n - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
// swap arr[j] and arr[j+1]
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// IF no two elements were
// swapped by inner loop, then break
if (swapped == false)
break;
}
}
// Function to print an array
static void printArray(int arr[], int size)
{
int i;
for (i = 0; i < size; i++)
System.out.print(arr[i] + " ");
System.out.println();
}
// Driver program
public static void main(String args[])
{
int arr[] = { 64, 34, 25, 12, 22, 11, 90 };
int n = arr.length;
bubbleSort(arr, n);
System.out.println("Sorted array: ");
printArray(arr, n);
}
}
// This code is contributed
// by Nikita Tiwari.
4.歸納
排序方法
時間復雜度(最壞)
時間復雜度(最好)
空間復雜度
穩(wěn)定性
冒泡排序
O(n*n)
O(n)
O(1)
穩(wěn)定
5.總結
代碼簡介但低效,僅用于入門。
參考:
十大經典排序算法
Bubble Sort
[冒泡排序](
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/74829.html
摘要:冒泡排序冒泡排序英語是一種簡單的排序算法。冒泡排序算法的運作如下比較相鄰的元素。冒泡排序動態(tài)圖代碼實現我們來逐行分析下。這里的減是為了不在遍歷之前排序好的元素。記錄交換的次數,但代表沒有交換,序列已經有序。 冒泡排序 冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重復地進行直...
摘要:前言冒泡排序大概的意思是依次比較相鄰的兩個數,然后根據大小做出排序,直至最后兩位數。由于在排序過程中總是小數往前放,大數往后放,相當于氣泡往上升,所以稱作冒泡排序。 前言 冒泡排序大概的意思是依次比較相鄰的兩個數,然后根據大小做出排序,直至最后兩位數。由于在排序過程中總是小數往前放,大數往后放,相當于氣泡往上升,所以稱作冒泡排序。但其實在實際過程中也可以根據自己需要反過來用,大樹往前放...
摘要:經過一次冒泡排序,最終在無序表中找到一個最大值,第一次冒泡結束。也是我們后面要說的冒泡排序的優(yōu)化。冒泡排序只執(zhí)行第一層循環(huán),而不會執(zhí)行第二層循環(huán)。因此冒泡排序的時間復雜度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...
摘要:代碼修正后修改后,我們可以排列無限個數字這樣,一個冒泡排序就完成了。,數組名表示整個數組。 首先感謝一位博主: 原來45 他寫的博客內容十分詳細,為我創(chuàng)造博客提供了莫大的幫助,也為我解決了很多困難。 先貼出2篇他的文章 C語言從入門到入土(入門篇)(數組p1)_原來45的博客-CSDN博客 ...
閱讀 2827·2023-04-25 14:21
閱讀 1252·2021-11-23 09:51
閱讀 4178·2021-09-22 15:43
閱讀 677·2019-08-30 15:55
閱讀 1645·2019-08-29 11:28
閱讀 2508·2019-08-26 11:44
閱讀 1745·2019-08-23 18:15
閱讀 2942·2019-08-23 16:42