04資料結構排序演算法之直接插入排序
直接插入排序(Straight Insertion Sort)基本思想是將資料分為有序區和無序區,每次從無序區中拿出一個資料插入到有序區中。
直接插入排序和簡單選擇排序很類似,簡單選擇排序的基本思想也是將資料分為有序區和無序區,每次從無序區中選擇一個最小值放入有序區最後。具體參考簡單選擇排序(https://www.jianshu.com/p/9fbc1678f5aa)
具體程式碼實現如下:
/**
* 直接插入排序
*
* @param dataArray 要排序的資料來源
*
* @return 已排序的資料
*/
+ (NSArray *)straightInsertionSort:(NSArray *)dataArray {
NSMutableArray *resultArray = [NSMutableArray arrayWithArray:dataArray];
NSNumber *temp;
NSInteger j;
for (NSInteger i = 1; i < resultArray.count; i ++) {
if (resultArray[i] < resultArray[i-1]) {
temp = resultArray[i];//儲存帶排序的資料
for (j = i - 1; j >= 0 && resultArray[j] > temp; j --) {//插入到前面已經排序的有序區中
resultArray[j + 1] = resultArray[j];
}
resultArray[j + 1] = temp;
}
NSLog(@"i=%ld array:%@",i, resultArray);
}
return resultArray;
}
相關文章
- 【資料結構】直接插入排序資料結構排序
- 【資料結構】直接插入排序_哨兵位資料結構排序
- 資料結構&演算法實踐—插入排序資料結構演算法排序
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 複習資料結構:排序(一)——插入排序資料結構排序
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 排序演算法-直接插入排序排序演算法
- python演算法與資料結構-插入排序(34)Python演算法資料結構排序
- [資料結構與演算法]-排序演算法之插入排序(insertion sort)及其實現(Java)資料結構演算法排序Java
- 直接插入排序演算法排序演算法
- 演算法學習之直接插入排序(java)演算法排序Java
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 資料結構與演算法之排序資料結構演算法排序
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 04 Javascript資料結構與演算法 之 集合JavaScript資料結構演算法
- 程式猿修仙之路--演算法之直接插入排序演算法排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 演算法與資料結構系列 ( 四 ) - 插入排序法- Insert Sort演算法資料結構排序
- 資料結構與演算法之快速排序資料結構演算法排序
- 排序演算法總結之直接選擇排序排序演算法
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法之折半插入排序排序演算法
- 經典演算法之直接插入排序及其優化演算法排序優化
- 查詢與排序04,插入排序排序
- 資料結構學習(C++)續——排序【2】插入排序 (轉)資料結構C++排序
- 筆試之排序-直接插入排序、氣泡排序、快速排序筆試排序
- 直接插入排序排序
- 私人訂製之資料結構(排序演算法)資料結構排序演算法
- 演算法與資料結構之原地堆排序演算法資料結構排序
- 排序演算法入門之「插入排序」排序演算法
- 演算法與資料結構系列 ( 五 ) - 插入排序法改進- Insert Sort演算法資料結構排序
- 資料結構與演算法——插入排序以及C++函式模板實現資料結構演算法排序C++函式
- 演算法與資料結構高階排序演算法之歸併排序演算法資料結構排序
- 資料結構和演算法面試題系列—排序演算法之快速排序資料結構演算法面試題排序
- 07 Javascript資料結構與演算法 之 排序演算法JavaScript資料結構演算法排序