氣泡排序演算法的運作如下:
1、比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
3、針對所有的元素重複以上的步驟,除了最後乙個。
4、持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
void bubblesort(int arr, int n)
}
}
交換兩個資料,可以用用臨時變數,也可用以下的兩個方法
a = a^b;
b = a^b;
a = a^b;
或者a = a + b;
b = a - b;
a = a - b;
/**
* 雞尾酒排序法
* *正常氣泡排序法,每次遍歷都是向乙個方向冒出最值,
*而雞尾酒排序法是變異的氣泡排序法,往返方向找出最值
*/public void sort(int a)
}
/**
*改進的冒泡演算法,在第i次遍歷時,若沒有交換資料,說明剩餘的資料已經是有序的
*/void bubblesort(int arr)
}if(didswap == false)
return;
}
}
選擇排序的工作原理:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
/**
* @brief 選擇排序
* * @param list 要排序的陣列
* @param n 陣列中的元素數量
*/void selectsort(int *list, int list_size)
}// 如果找到了比當前小的, 就把當前元素與之交換
if (min_index != i)
}}
歸併操作的過程如下:
1、申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列
2、設定兩個指標,最初位置分別為兩個已經排序序列的起始位置
3、比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置
4、重複步驟3直到某一指標到達序列尾
5、將另一串行剩下的所有元素直接複製到合併序列尾
/**
* @brief 歸併排序
* * @param *list 要排序的陣列
* @param n 陣列中的元素數量
*/void mergesort(int *list, int list_size)}
/** * @brief 歸併兩個有序陣列
* * @param list1
* @param list1_size
* @param list2
* @param list2_size
*/void merge_array(int *list1, int list1_size, int *list2, int list2_size)
// 如果 list1 還有元素,把剩下的資料直接放到結果陣列
while (i < list1_size)
// 如果 list2 還有元素,把剩下的資料直接放到結果陣列
while (j < list2_size)
// 把結果陣列 copy 到 list1 裡
for (int ii = 0; ii < (list1_size + list2_size); ++ii)
free(list);
}
快速排序的步驟
1.先從數列中取出乙個數作為基準數。
2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
3.再對左右區間重複第二步,直到各區間只有乙個數。
/**
* @brief 快速排序
* * @param list 要排序的陣列
* @param lindex 左下標
* @param rindex 右下標
*/
void quicksort(int list, int lindex, int rindex)
list[i] = x;
quicksort(list, lindex, i - 1); // 遞迴呼叫
quicksort(list, i + 1, rindex);
}}
幾種常見排序演算法
幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...
幾種常見排序演算法
1氣泡排序 bubble sort 氣泡排序思路 1.將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 2.對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i 0 i n...
幾種常見排序演算法
以下內容包括 氣泡排序,選擇排序,桶排序 一 氣泡排序 bubblesort public class bubblesort int temp 0 for int i 0 i1 i system.out.println arrays.tostring arr 用arrays類中的tostring方法...