1. 程式人生 > >交換排序,氣泡排序,選擇排序

交換排序,氣泡排序,選擇排序

交換排序

for(int i=0;i<length-1;i++) 
{ 
    for(int j=i+1;j<length;j++) 
    { 
        if(arr[i]>arr[j])
        {
            int temp=arr[i]; 
            arr[i]=arr[j]; 
            arr[j]=temp;
        }
    }
}

第一個數,先和第二個到最後一個都比一遍,將最小的放在最前端。
第二個數,和第三個到最後一個都比一邊,將最小的放在最前面。

氣泡排序

for
(int i=0;i<length-1;i++) { for(int j=0;j<length-i-1;j++) { if(arr[j]>arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }

第一遍:
第一個和第二個比,將大的放在後面。第二個和第三個比,將大的放在後面。。。
第二遍:
同上,但相對迴圈次數減少一次。

//優化:
bool
flag = true; for(int i=0;i<length-1 && flag;i++) { swap = false; for(int j = 0;j <len -1-i;j++)//比較的下標 { if(arr[j] > arr[j+1]) { tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; swap =true; } } if
(swap == false)//沒有交換 { break; } }

選擇排序

int min = 0; 
for (int i=0; i<length-1; i++) 
{
    min = i; //定義當前下標為最小值 
    for (int j=i+1;j<length;j++) 
    { 
        if (arr[min] > arr[j]) //如果存在更小的值 
        { 
            min = j; //調整 min 下標 
        } 
    } 
    if (i != min) //若 i 不為最小值,交換 
    { 
        int tmp = arr[min]; 
        arr[min] = arr[i]; 
        arr[i] = tmp;
    } 
}

先假設第一個為最小值,記錄下標。第一個和之後的比,找到最小值的下標,記錄。判斷兩個下下標是否相等,如果不相等交換。

相關推薦

幾種排序方法詳解(選擇排序氣泡排序、插入排序、快速排序

由於本帖只是闡述幾種排序方法的原理、如何區分以及編寫幾種排序的簡單程式碼,所以直接給定陣列是 a[ ]={6,2,8,5,1},需要把以上5個數字按升序排列 1. 選擇排序法 (如果不想看解釋分析,直接往後拉看程式碼) 實質: 第一輪:通過對比陣列中前一個元素和後一個元素

排序演算法(一)選擇排序氣泡排序

1. 選擇排序: 選擇排序是一種很簡單直觀的排序方法,就是在未排序的資料中挑選出最大或者最小的元素,存放到已排序資料的末尾。 簡單的講,就是每次都把最大或者最小的資料挑選出來,然後依次組成新的序列。 假設有資料{1,4,6,8,3,4,0,2,14},要按照從大到小進行

氣泡排序簡記以及其與選擇排序的區別

氣泡排序 所謂的氣泡排序,其基本概念是,依次比較相鄰兩個數的大小,如果num[i] > num[i+1],則將小數放在前面,大數放在後面。如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此

排序算法之簡單選擇排序

clip order ng- left 運行 [] cal var ret 基本思想 在一組元素中選擇具有最小排序碼的元素,若它不是這組元素中的第一個元素,則將它與這組元素中的第一個元素對調;在未排序的剩下的元素中反復運行以上步驟,直到剩余元素僅僅有一

排序算法入門之選擇排序-Java實現

ati min .net 入門 oid 下標 static ava 對象數組 本文參考http://blog.csdn.net/m0_37568091/article/details/78023705 選擇排序是先從對象數組中選出最小的放在第一個位置,再從剩下的元素中選

算法2 排序算法:直接選擇排序和堆排序

重新 父親 i++ 快速排序 selection left http edi spl 上一篇總結了交換排序的冒泡排序和快速排序。這一篇要總結的是選擇排序,選擇排序分為直接選擇排序和堆排序,主要從以下幾點進行總結。 1、直接選擇排序及算法實現 2、堆排序及算法實現

排序演算法c語言描述---選擇排序

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

排序演算法(三):簡單選擇排序(Simple Selection Sort)

基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。 簡單選擇排序的示例: 操作方法: 第一趟,從n

java排序演算法(三)------選擇排序

選擇排序 基本思想:每一趟從待排序的資料元素中選擇最小(或最大)的一個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。 選擇排序的時間複雜度和空間複雜度分別為 O(n2 ) 和 O(1) 程式碼實現: public static void s

排序演算法2——圖解簡單選擇排序及其實現

排序演算法1——圖解氣泡排序及其實現(三種方法,基於模板及函式指標) 排序演算法2——圖解簡單選擇排序及其實現 排序演算法3——圖解直接插入排序以及折半(二分)插入排序及其實現 排序演算法4——圖解希爾排序及其實現 排序演算法5——圖解堆排序及其實現 排序演算法6——圖解歸併排序及其遞迴與非

java排序演算法(二)----選擇排序

選擇排序(Selection Sort)  選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從

Java數組排序算法之直接選擇排序

col select div 算法 ray stat http 條件 new 1.基本思想 直接選擇排序的基本思想是將指定排序位置與其他數組元素分別對比,如果滿足條件就交換元素值,註意這裏區別冒泡排序,不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換。 與冒泡

排序演算法(六)——選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序演算法。選擇排序的交換操作介於和次之間。選擇排序的比較操作為次。選擇排序的賦值操作介於和次之間。 運作方式如下: 1.首先從原始陣列中選擇最小的1個數據,將其和位於第1個位置的資料交換。 2.接著從剩下的n-1個數據中選擇次小的

八種排序方法(一)——選擇排序

編譯器:Xcode 程式語言:C++ 選擇排序的基本思想: 每一趟在n-i+1(i=1,2,3…,n-1)個記錄中選取關鍵字最小的記錄與第i個記錄交換,並作為有序序列中的第i個記錄。

8大排序之-----(3)選擇排序與時間複雜度

                                                     選擇排序與時間複雜度 (一)選擇排序的基本思想:選擇排序就是每一次從待排序的資料中選出最小的元素,放到已經排好序的資料的最後位                    

排序演算法之python簡單選擇排序

簡單選擇排序 介紹:     簡單選擇排序是一種選擇排序。每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止 思想: 選擇排序思想很簡單,就是每次從待排序列中找出關鍵字最小的元素,放入已經排好的序列中,本質上就是第一次在後面選

排序(二):選擇排序

前言:有時候,我會覺得,凡事只要有個目標,便可以朝著它努力,這樣必定會有結果;可是,慢慢的我發現,在生活中,太多的我們追求的事情,是沒有目標的,這也正是我現階段困惑的東西,我只能一步步的去試探,試圖發現

排序演算法(二)——選擇排序及改進

選擇排序 基本思想 氣泡排序中有一個缺點,比如,我們比較第一個數a1與第二個數a2的時候,只要a1比a2大就會交換位置,但是我們並不能確定a2是最小的元素,假如後面還有比它更小的,該元素還會與a2

排序(一):選擇排序

一、步驟 1、找到陣列中的最小元素; 2、將第一步找到的最小元素與陣列第一個元素交換位置(如果第一個元素就是最小元素則和自己交換); 3、在剩下的元素中找到最小元素,將它與第二個元素交換位置。如此

八大排序演算法之三簡單選擇排序(c語言)

選擇排序—簡單選擇排序(Simple Selection Sort) 基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元