1. 程式人生 > >氣泡排序演算法及其優化

氣泡排序演算法及其優化

對於上面的序列我們發現,含有10個元素的序列需要45次比較(第一趟9次,第二趟8次,第三趟7次,....... ,第九趟1次),那麼真的需要45次嗎?對於下面的這種序列{1,2,4,5,8,9,10,14,15,13},使用上面的演算法也是45次,但觀察發現該序列大部分是有序的,第一趟將15沉底放置最後,得到{1,2,4,5,8,9,10,14,13,15},第二趟將14沉底放置最後,得到{1,2,4,5,8,9,10,13,14,15},從第三趟到最後一趟都無需再移動,所以那些比較都是徒勞的,因此,我們對上述演算法進行如下優化,減少演算法的比較次數。優化的方法就是加一個標誌位,記錄本趟比較是否發生交換,下一趟根據這個標誌位,若上一次沒有交換,則本趟比較無需進行。

相關推薦

氣泡排序演算法及其優化(Python)

#!/usr/bin/python3 # -*- coding: UTF-8 -*- import random ''' 氣泡排序演算法及其優化 氣泡排序的基本特徵是隻能交換相鄰的元素。 從下邊界開始,一趟掃描下來,可以把當前最大值頂到上邊界; 如果沒有發生交換操作,則表

氣泡排序演算法及其優化

對於上面的序列我們發現,含有10個元素的序列需要45次比較(第一趟9次,第二趟8次,第三趟7次,....... ,第九趟1次),那麼真的需要45次嗎?對於下面的這種序列{1,2,4,5,8,9,10,14,15,13},使用上面的演算法也是45次,但觀察發現該序列大部分是有序的,第一趟將15沉底放置最後,得

氣泡排序演算法及其優化(BubbleSort)

氣泡排序算是排序演算法裡面的一種較為簡單的演算法,也是我接觸的第一種排序演算法,有升序與降序之分,如果面試的時候面試官問道這個題目,一定要問清楚是升序還是降序,這樣會給你加分。 下面,我以升序來講一下它的運作。 1、比較相鄰的元素。如果第一個比第二個大,就交換他們

【資料結構】各類排序演算法及其優化總結

本文對各類排序演算法的實現、優化、複雜度、穩定性、適用場景作以全面總結,為了突出演算法的簡潔、易懂,去除了一些冗餘操作,預設為升序進行模擬。 一、插入排序 插入排序基本思想:每一步將一個待排序的元素,按其排序碼的大小,插入到前面已經排好序的一組元素的合適位置

交換排序氣泡排序/快速排序及其優化

交換排序基本思想 兩兩比較待排記錄的關鍵字,一旦發現兩個記錄的次序與排序的要求相逆,則交換這兩個記錄的位置,直到表中沒有逆序的記錄存在為止。 分類 氣泡排序 快速排序(對冒泡的改進) <1>氣泡排序 基本思想:序列中相鄰的兩個元素進行比較,如果前一個元素

資料結構和演算法 | 氣泡排序演算法原理及實現和優化

氣泡排序(Bubble Sort)是排序演算法裡面比較簡單的一個排序。它重複地走訪要排序的數列,一次比較兩個資料元素,如果順序不對則進行交換,並一直重複這樣的走訪操作,直到沒有要交換的資料元素為止。 氣泡排序的原理 為了更深入地理解氣泡排序的操作步驟,我們現在

氣泡排序演算法(起泡排序及其C語言實現

起泡排序,別名“氣泡排序”,該演算法的核心思想是將無序表中的所有記錄,通過兩兩比較關鍵字,得出升序序列或者降序序列。 例如,對無序表{49,38,65,97,76,13,27,49}進行升序排序的具體實現過程如圖 1 所示: 圖 1 第一次起泡 如圖 1 所示是對無序表的第一次起泡排序,最終將無序

【手寫排序演算法優化氣泡排序

c++程式碼 #include<iostream.h> void Print(int A[],int len) {for(int i=0;i<len;i++){cout<<A[i]<<" ";}cout<<endl;

java 氣泡排序演算法優化

1、氣泡排序優化思想 在文章《JAVA實現氣泡排序演算法》中,我們用常規演算法實現了氣泡排序,在此篇中,我們對氣泡排序演算法進行優化,思想如下:引入一個標誌位,預設為true,如果本次或者本趟遍歷前後資料比較發生了交換,則標誌位設定為true,否則為false;直到又一次資

氣泡排序法及優化

【7】在沒有資料交換的時候,提前退出氣泡排序。 氣泡排序:只操作相鄰的兩個資料。空間複雜度O(1),原地排序演算法。相鄰兩個元素大小相等時不做交換,是穩定的排序演算法。 最好時只進行一次冒泡操作,最好時間複雜度O(n),最壞時需進行n次冒泡操作,為O(n2)。平均時間複雜度是O(n2

菜鷄日記——KMP演算法及其優化與應用

一、什麼是KMP演算法 KMP演算法,全稱Knuth-Morris-Pratt演算法,由三位科學家的名字組合命名,是一種效能高效的字串匹配演算法。假設有主串S與模式串T,KMP演算法可以線上性的時間內匹配出S中的T,甚至還能處理由多個模式串組成的字典的匹配問題。 二、KMP演算法原理及實現

經典排序演算法(1)——氣泡排序演算法詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

153-練習5 對陣列進行排序,Array.Sort和氣泡排序演算法

5,編寫一個控制檯程式,要求使用者輸入一組數字用空格間隔,對使用者輸入的數字從小到大輸出。(Array.Sort方法和氣泡排序) Array.Sort()方法,CLR提供的排序方法,使用的是快速排序。 string str = Console.ReadLine();

氣泡排序演算法 For ERL

(ERL的氣泡排序)Bubble Sorting IN ERLANG 實現原理 1. 從陣列的第一個元素arr[0]開始,兩兩比較arr[n]和arr[n+1],如果前面的數大於後面的數arr[n] > arr[n+1],那麼交換兩個元素的位置,把大的數往後移動 2.

氣泡排序演算法java實現

package algorithm; /** * 氣泡排序演算法 * @author su * */ public class BubbleSort { public static void main(String[] args) { int[] a = {6,2,5,4,7,1,

排序演算法及其演算法

排序演算法及其子演算法 各類排序演算法 插入排序(insertion sort) 融合排序(Merge Sort) merge two sorted array 各類排序演算法 插入

氣泡排序及簡單優化

1、氣泡排序為兩個相鄰的資料進行對比,然後根據排序規則,進行位置對換2、每次迴圈找出一個數字按照規則排序的位置,最小迴圈次數為n-1,n為陣列長度 如下為氣泡排序的一個程式碼實現 public static int[] bubbleSorted(int[] arr) { int le

經典排序演算法——氣泡排序演算法詳解

一、演算法基本思想 (1)基本思想 氣泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。 演算法的核心在於每次通過兩兩比較交換位置,選

c#中氣泡排序演算法描述

int temp = 0; int b = 0; int[] arr = { 23, 44, 66, 76, 98, 11, 3, 99, 7 };# region該段與排序無關Console.WriteLine("排序前的陣列:");foreach (int item in arr){ Co

經典氣泡排序演算法

public static void main(String[] args) { int[] a = {23, 4, 5, 1, 3, 33, 89}; for (int i = 0; i < a.length; i++) { //外層迴圈控制迴圈的次數