四種基本排序演算法原理解析

2021-07-17 03:41:50 字數 1453 閱讀 1529

1.插入排序

說明:將第2個元素到最後乙個元素分別插入到前面已經排好的序列中

初始值: 5,4,3,2,1

loop1: 4,5,3,2,1(4插入到5的前面)

loop2: 3,4,5,2,1(3插入到4的前面)

loop3: 2,3,4,5,1(2插入到3的前面)

loop4: 1,2,3,4,5(1插入到2的前面)

void insertsort(int *arr,int n)

arr[j+1] = value;

}}

2.選擇排序

說明:在未排序子串行中選出最小的和未排序的第乙個元素交換,從而使已經排序的子串行增長,直到最後排序完成

初始值:6,5,4,2,1

loop1:1,5,4,2,6(最小的是1,和6交換)

loop2:1,2,4,5,6(最小的是2,和5交換)

loop3:1,2,4,5,6(最小的是2,不用交換)

loop4:1,2,4,5,6(最小的是2,不用交換)

void selectsort(int *arr, int n)

}tmp = arr[i];

arr[i] = arr[min];

arr[min] = tmp;

}}

3.氣泡排序

說明:在未排序的子串行中找到最大的數放到未排序的序列的最右邊,從而使已排序的子串行增長,直到全部排序完成。

初始:2,1,4,5,3

loop1:1,2,4,3,5

loop2:1,2,3,4,5

loop3:1,2,3,4,5

loop4:1,2,3,4,5

void bubblesort(int *arr,int n)}}

}

4.快速排序

說明:先把arr[low]提出賦值到t,然後從右邊開始找high–,找到第1個比t小的,就交換到low的位置,然後low++,找到第乙個比t大的,就交換到high的位置,然後再high–,直到low指標和high指標相遇,完成一次排序。

原始:3,2,1,4,5

low=0,high=4;

arr[low]=3,先和arr[high]=5比較,因為5>3所以high–,直到找到1<3,然後arr[low]=1,此時變化指標的流動方向,low++等到low==2時候和high相遇,結束一次迴圈,結果為:1,2,3,4,5

int partition(int

*arr, int low, int high)

void quicksort(int

*arr, int low,int high)

四種基本排序演算法

思路分析 在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。實現 arr array 1,43,54,62,21,66,32,78,36,76,39 functio...

排序演算法(四種)

氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。氣泡排序從前往後遍歷和從後往前遍歷一樣的原理。目標陣列 3,5,2,6,4,9,7,12,11 從前往後 第一波 從第乙個數開始,如果第乙個數大於第二個數,就把這兩個數調換位置,否則保留之前的排列,第二次把第二個和第三個數比較,比較方...

四種排序演算法

今天整理了一下幾種常見的排序 冒泡,選擇,插入,和快速排序演算法實現。第一種,氣泡排序 具體實現 相鄰的兩個元素比較,後面的元素大於前面的元素,交換位置。public static int maopaosort int arr return arr 選擇排序具體實現 每次把陣列中第乙個元素作為最小值...