插入排序(摘自百科):插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的、個數加一的有序資料,演算法適用於少量資料的排序,
時間複雜度
為o(n^2)。是穩定的排序方法。
插入排序主要分為直接排序和折半排序,本質的思想是一致的,只是實現的思路不一致。
直接排序是從右到左進行比較進行排序;而折半排序就是在已排序的基礎上對半進行比較,即比較a[i-2/2]與a[i]進行比較定位。
直接排序的方法:
(1)預設a[0]是排好序的。(顯然廢話咯
(2)分別對a[1-n]進入插入咯。即每次迴圈將a[i]插入到a[0-i-1]的有序區中
(3)插入進去後將比a[i]大的數值進行a[i+1]=a[i]操作
c++**實現:
#includeusing namespace std;
void insertionsort(int *insertion, int num);
int main()
void insertionsort(int *insertion, int num)
} if (j != (i - 1))//判斷是否需要插入
insertion[j + 1] = tmp;
} }for (int i = 0; i < num; i++)
}
參考資料見大神:
折半排序:
#includeusing namespace std;
void insertionsort(int *insertion, int num);
void insertionsort2(int *insertion, int num);
int main()
system("pause");
deleteinsertion;
return 0;
}void insertionsort(int *insertion, int num)
} if (j != (i - 1))//判斷是否需要插入
insertion[j + 1] = tmp;
} }}void insertionsort2(int *insertion, int num)//折半排序
insertion[low] = temp;
}}
演算法之插入排序
直接插入排序 package insertsort 插入排序之直接插入排序 直接插入排序基本思想 在要排序的一組數中,假設n 1個數已經排好,將第n個數插入到已經排好的序列中 如此反覆迴圈,直至所有的數排好。public class directinsertsort public int inser...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...