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
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- 直接插入排序演算法排序演算法
- 資料結構與演算法之排序資料結構演算法排序
- 演算法與資料結構系列 ( 四 ) - 插入排序法- Insert Sort演算法資料結構排序
- 程式猿修仙之路--演算法之直接插入排序演算法排序
- 04 Javascript資料結構與演算法 之 集合JavaScript資料結構演算法
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 資料結構與演算法之快速排序資料結構演算法排序
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法之折半插入排序排序演算法
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 演算法與資料結構系列 ( 五 ) - 插入排序法改進- Insert Sort演算法資料結構排序
- 直接插入排序排序
- 演算法與資料結構之原地堆排序演算法資料結構排序
- 私人訂製之資料結構(排序演算法)資料結構排序演算法
- 排序演算法入門之「插入排序」排序演算法
- 排序演算法之「插入排序(Insertion Sort)」排序演算法
- 演算法與資料結構高階排序演算法之歸併排序演算法資料結構排序
- 07 Javascript資料結構與演算法 之 排序演算法JavaScript資料結構演算法排序
- 資料結構與演算法——排序資料結構演算法排序
- 資料結構和演算法面試題系列—排序演算法之快速排序資料結構演算法面試題排序
- Java常見排序演算法之插入排序Java排序演算法
- js實現資料結構及演算法之排序演算法JS資料結構演算法排序
- 資料結構之計數排序資料結構排序
- 畫江湖之演算法篇【排序演算法】插入排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 插入排序演算法排序
- PHP 演算法02之插入排序PHP演算法排序
- 死磕演算法之插入排序演算法排序
- 小白懂演算法之插入排序演算法排序
- 資料結構和演算法面試題系列—排序演算法之基礎排序資料結構演算法面試題排序
- 資料結構與演算法——排序演算法-歸併排序資料結構演算法排序
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序