常用的排序演算法

2021-08-17 21:50:00 字數 1387 閱讀 4251

1.插入排序

插入排序的思想就是將不符合排序條件的元素依次後移,並在符合條件處插入要排序的資料。

void insert_sort(int* a,int len)

2.shell排序

shell排序的思想就是先將要排序的陣列用乙個較大的增量去分組,再對每個分組進行插入排序,這樣剛開始時分組數較多,每組元素個數較少,但隨著分組的增量逐漸減小,每組中的資料量逐漸增多,但已接近有序,所以效率要比插入排序要高。

void shell_sort(int* a,int len)

}3.氣泡排序

氣泡排序的思想就是用當前的值和所有的值進行比較,如果不滿足條件就進行交換,直到選出最合適的值為止。

void bubble_sort(int a,int len)}}

4.選擇排序

選擇排序的思想就是用乙個變數記錄當前所有資料中最符合條件的索引值並進行交換。

void select_sort(int* a,int len)

a[i] = a[min_index];

a[min_index] = min_value;

}5.快速排序

快速排序的思想就是選出乙個基值作為分界線,把小於該基值的放在左邊,大於該基值的放於右邊,依此遞迴。

void quick_sort(int* a,int left,int right)

a[i] = pivot;

quick_sort(a,left,i-1);

quick_sort(a,i+1,right); 

}6.歸併排序

歸併排序的思想就是將資料分組排序,剛開始分組數較多,但每組元素較少,隨著遞迴的深入,分組越來越少,要排序的元素越來越多,但已接近有序。

static void merge_sort_2(int* a,int* temp,int left,int middle,int right)

while(l_start <= l_end)

temp[temp_index++] = a[l_start++];

while(r_start <= r_end)

temp[temp_index++] = a[r_start++];

for(temp_index=temp_index-1;temp_index >= left;temp_index--)

a[temp_index] = temp[temp_index];

}static void merge_sort_1(int*a,int* temp,int left,int right)

}void merge_sort(int* a,int left,int right)

merge_sort_1(a,temp,left,right);

free(temp);

}

常用的排序演算法

排序方式 插入排序 直接插入排序 shell排序 選擇排序 直接選擇排序 堆排序交換排序 氣泡排序 快速排序 歸併排序 分配和索引排序 基數排序 桶式排序 include using namespace std 直接插入排序 arr為待排陣列,n為陣列長度 void insertsort int a...

常用的排序演算法

1.氣泡排序 private static void bubblesort int a 列印氣泡排序的結果 for int i 0 i2.快速排序 public class quicksort qs.data data qs.sort 0,qs.data.length 1 qs.display 3....

常用的排序演算法

1.氣泡排序 時間複雜度 o n 2 氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上...