從未排序的集合中找出乙個元素,依次與已排序的集合元素進行比較,如果滿足規則,小於或是等於,直接插入,依次迴圈,直至待排序集合元素為空。
**清單.插入排序
/**
* 直接插入排序
*@param arr
*/public
void
insertsort(int arr)
}}
從待排序元素集合中,找出其中最大或是最小的元素,插入到集合的隊首位置。
**清單.選擇排序
/**
* 選擇排序 每次選擇最小的或者是最大的插入到隊首
*@param arr
*/public
void
selectsort(int arr)
}}
氣泡排序的原則,每次迴圈查詢,找出元素最小或是最大的元素到末尾的位置,類似氣泡一樣,將小的浮出水面,將大的沉至最底下。
**清單.氣泡排序
public
void
bubblesort(int arr) else }}
}
注意上述使用了乙個i***change
變數對排序演算法進行了優化,初始的時候設定為true代表的是需要進行交換,當我們排序一圈發現每次都是arr[j-1] <= arr[j] 成立,那麼代表集合已經排序,無序再進行迴圈,可以提前結束迴圈。
快速排序的原理是,先找出乙個基數字,然後對集合進行前後同時掃瞄,將基數大的放在右邊,比基數小的放在左邊,不停的迭代,直至排序完成。
**清單.快速排序
public
void
quicksort(int arr,int left,int right)
temp = arr[left];//哨兵
while(i!=j)
}arr[left] = arr[i];
arr[i] = temp;
quicksort(arr,left,i-1);
quicksort(arr,i+1,right);
}
希爾排序的原理是:先將待排序的集合元素通過設定增量的方式進行分組,然後對每個分組進行交換,或者是插入的方式讓每個小組變的有序,直至增量為1排序完畢。下面給出兩種實現方式:
**清單.交換方式
public
static
void
shellsort(int arr) }}
}
**清單.移位操作
public
static
void
shell_move_sort(int arr)
arr[j] = temp;}}
}}
排序演算法集合
氣泡排序 public static int maopao int param return param 快速排序 public static int quick int param,int left,int right return param 分割陣列,相當於分治演算法,快速排序的核心 priv...
排序演算法集合
就按照 演算法導論 裡面的順序寫吧 原理都不講了,只是貼一下 給參考。其實書上也寫得很清楚,我只是用c 實現出來而已。1.歸併排序 merge sort include include include include include using namespace std 二路歸併排序 遞迴實現 v...
排序演算法集合
一.氣泡排序 思路 比較相鄰的元素,每次比較都會生成最大或者最小值放在最後,所以每輪比較次數會遞減 function sort arr 複製 二.快排 思路 雙指標 遞迴分治。每次比較都能找到基值的位置,然後遞迴比較基值左右的部分 function sort arr,start,end arr st...