1. 程式人生 > >關於陣列的排序問題(氣泡排序,選擇排序,插入排序)

關於陣列的排序問題(氣泡排序,選擇排序,插入排序)

方法一:氣泡排序法

程式碼:
    public int[] bubbleSort(int[] a){  //氣泡排序演算法  
//每趟不斷將相鄰記錄兩兩比較,並按“前小後大”(或“前大後小”)規則交換。
        int len = a.length;
        for(int i = len-1;i>=1;i--){
            for(int j = 0;j<=i-1;j++){
                if(a[j]>a[j+1]){
                    int temp = a[j]; 
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        return a;
    }
將陣列中的相鄰兩個元素進行比較,將比較大(較小)的數通過兩兩比較移動到陣列末尾(開始),執行一遍內層迴圈,確定一個最大(最小)的數,外層迴圈從陣列末尾(開始)遍歷到開始(末尾).

方法二:選擇排序法

程式碼:
    public int[] selectionSort(int[] a) {     //選擇排序演算法
//在n個記錄中選擇最小者放到r[1]位置;然後,從剩餘的n-1個記錄中選擇最小者放到r[2]位置;…如此進行下去,直到全部有序為止。
    	for(int i=0; i<a.length; i++) {
    		for(int j = i+1; j < a.length; j++) {
    			if(a[i] > a[j]) {
    				int temp = a[i];
    				a[i] = a[j];
    				a[j] = temp;
    			}
    		}
    	}
    	return a;
    }
首先選取陣列中的第一個數,迴圈的跟其餘的數比較,如果當前數大於(小於)一個數,那麼互還數值。這樣確定第一個,然後一次確定其餘的數

方法三:插入排序法

程式碼

public static int[] insertSort(int[] a) {     //插入排序演算法
//從第2個元素開始,每一趟將1個新元素插入到已排好序的有序表中
    	for(int i=1; i<a.length; i++) {
    		for(int j=i; j>0; j--) {
    			if(a[j] < a[j-1]) {
    				int temp = a[j];
    				a[j] = a[j-1];
    				a[j-1] = temp;
    			} else {
    				break;
    			}
    		}
    	}
    	return a;
    }

就像他的名字,就是取第一個數作為定數,然後想玩撲克牌一樣,將一張牌插入到已經排好的序列中來完成排序。

相關推薦

三大基礎排序氣泡排序選擇排序插入排序思想

1.氣泡排序 1-1 思想: 氣泡排序思想:從陣列的下標為0的元素開始,首先將下標為0的下標與陣列下標為1的元素比較,如果陣列下標1 的元素更小,交換,接著比較下標1與下標2的元素,如果下標2較小則交換,反之接著將下標2與下標3比較。。。 以此類推,經過n-1趟排序就可以得到結果 。

資料結構 排序氣泡排序改進簡單選擇排序連結串列實現

實驗題目:     排序演算法實現與比較             實驗環境:    Visual C++ 6.0                     實驗八: 實驗目的和要求:熟悉多種排序演算法,理解每種排序演算法思想,掌握排序演算法的基本設計方法,掌握排序演算法

小川學習筆記--JAVA一個類實現多種排序氣泡排序、快速排序選擇排序、插值排序

JAVA氣泡排序、快速排序、選擇排序、插值排序 作者:程式猿劉小川 public static void main(String[] args) //主程式 { int data[] = {5,7,1,0,2,3,4,66,9,8};

JAVA一個類實現多種排序氣泡排序、快速排序選擇排序、插值排序

JAVA氣泡排序、快速排序、選擇排序、插值排序 作者:程式猿劉小川 public static void main(String[] args) //主程式 { int data[] = {5,7,1,0,2,3

資料結構——交換排序氣泡排序快速排序

一.氣泡排序 1.原理:比較兩個相鄰的元素,將值大的元素交換至右端。 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前

交換排序氣泡排序快速排序

交換排序 氣泡排序 氣泡排序演算法:顧名思義,就是將最重的(最大元素)浮動到最下面,最輕的(最小元素)浮動到最上面. 演算法過程: 1.迴圈陣列長度length-1次,下標為i. 因為每次迴圈後就會出現一個最大(升序)或最小(降序),只需要比較n-1就

php二維陣列按某個鍵值排序突然用到以往知識算是臨時補充筆記吧

print_r($arr);排序後Array ( [0] => Array ( [name] => 6 [age] => 21 ) [1] => Array (

陣列排序交換法與選擇

交換法與選擇法降序排序 交換法 交換法對陣列陣列進行排序的基本思路 就是先讓陣列(n個數)中的最左邊的一個數(用i=0代表)與其右邊的每一個數(從j=i+1開始)依次(j++)進行比較,若遇到比其大的數(score[j]>score[i]),則將較

(排序演算法)linux c語言實現快速排序氣泡排序的改進版

 快速排序演算法是對氣泡排序演算法的一種改進,氣泡排序是對單個元素的升降,快速排序是對所有元素的升降,不過這個升降是取了某一個標準的前提下,在本文程式碼中,就以a[i],其實就是以最左邊的元素為參考,比較交換之後,將這個參考元素放到分界的地方,即i的位置。 程式碼如下,裡面有比較詳細的

多條資料按照某條資料中某個共有屬性排序氣泡排序

多條資料按照某條資料中某個共有屬性排序(氣泡排序) 注意:此例是根據學生成績由高到低排序,僅供自己專案中提供思路,勿擾。 1、新建一個專案,在專案中新增一個Students類,用於儲存學生的基本資訊。 Students 類: class Students {

拓撲排序 判斷是否完全拓撲及序列

Description An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from sma

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

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

排序演算法之交換排序氣泡排序、快速排序

前言 在前面幾篇部落格中總結了插入排序(直接插入和希爾排序)、選擇排序(直接選擇和堆排序)以及歸併排序,這裡將講下兩種選擇排序演算法——氣泡排序和快速排序。 氣泡排序 基本概念 氣泡排序相對快速排序而言相對簡單。冒泡就如同水裡的魚吐泡泡一樣,剛開始時泡泡很小,但

交換排序氣泡排序~快速排序~+插入排序直接插入排序~希爾排序~

一、氣泡排序 1、基本概念 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。 第一趟:首先比較第1個數和第2個數,將小數放前,大數放後;然後比較第2個數和第3個數,將小數放前,大數放後;如此繼續,直至比較最後兩個數,將小數放前,大數放後;至此第一趟結束,使得最後一個數字是最大的了!

輸入數值進行排序氣泡排序

本人因是菜鳥,在自學演算法,每過幾天會發一套演算法,以證明自己每天的進步!以下是簡單的輸入值排序(氣泡排序):已經驗證過,運用c++:#include <iostream>using namespace std;int main(){int a[6];for(in

起泡排序氣泡排序新理解

以前學起泡排序的時候只是知道它的思路及實現,並沒有好好總結歸納一下,那麼現在就來補充一下。 首先假設初始鍵值序列為 [50   13   55   97   27   38   49   65] 第一趟排序結果為             [13   50   55   27

交換排序氣泡排序—改進、快速排序

【氣泡排序(改進版本)】 複雜度:最好情況O(n),最壞O(n^2);演算法穩定 int a[10]={1,3,2,4,6,5,9,7,8,0}; int flag=9, last_flag=9;

排序氣泡排序與快速排序

1、氣泡排序(Bubble Sort) 將n個記錄進行氣泡排序的主要方法: 第一趟:將第一個記錄與第二個記錄比較,再將第二個與第三個比較(如果逆序就交換)......直到第n-1個與第n個比較得出:第n個記錄最大(最小); 第二趟:將第一個記錄與第二個記錄比較,再將第二個

1.交換排序氣泡排序和快速排序

交換排序的基本思想:兩兩比較關鍵字,當兩個記錄的次序相反時進行交換,直到完成排序為止。 (1)氣泡排序 基本思想:相鄰關鍵字間的比較和位置的交換,使關鍵字最小的記錄如氣泡一般逐漸往上“漂浮”直至“水面

連結串列排序氣泡排序

typedef struct StudentType {     int a;     struct StudentType *next;  } *Linklist,Link;    Linklist Build(int n)  {      Linklist p=NULL,s=NULL,ptr=NULL;