八种排序算法 Java、Python、C++实现 -- 插入排序
2016-08-04 11:04
405 查看
描述
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
Python实现代码:
Java实现代码:
C/C++
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
Python实现代码:
def insert_sort(lists): # 插入排序 count = len(lists) for i in range(1, count): key = lists[i] j = i - 1 while j >= 0: if lists[j] > key: lists[j + 1] = lists[j] lists[j] = key j -= 1 return lists
Java实现代码:
/** * 插入排序 * * 从第一个元素开始,该元素可以认为已经被排序 * 取出下一个元素,在已经排序的元素序列中从后向前扫描 * 如果该元素(已排序)大于新元素,将该元素移到下一位置 * 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 * 将新元素插入到该位置中 * 重复步骤2 * @param numbers 待排序数组 */ public static void insertSort(int[] numbers) { int size = numbers.length; int temp = 0 ; int j = 0; for(int i = 0 ; i < size ; i++) { temp = numbers[i]; //假如temp比前面的值小,则将前面的值后移 for(j = i ; j > 0 && temp < numbers[j-1] ; j --) { numbers[j] = numbers[j-1]; } numbers[j] = temp; } }
C/C++
void print(int a[], int n ,int i){ cout<<i <<":"; for(int j= 0; j<8; j++){ cout<<a[j] <<" "; } cout<<endl; } void InsertSort(int a[], int n) { for(int i= 1; i<n; i++){ if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入 int j= i-1; int x = a[i]; //复制为哨兵,即存储待排序元素 a[i] = a[i-1]; //先后移一个元素 while(x < a[j]){ //查找在有序表的插入位置 a[j+1] = a[j]; j--; //元素后移 } a[j+1] = x; //插入到正确位置 } print(a,n,i); //打印每趟排序的结果 } } int main(){ int a[8] = {3,1,5,7,2,4,9,6}; InsertSort(a,8); print(a,8,8); }
相关文章推荐
- 排序算法复习(Java实现)(二): 插入,冒泡,选择,Shell,快速排序
- 插入排序之直接插入排序算法-java实现
- 【排序算法】直接插入排序(java实现)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 八种排序算法Java实现-直接插入和带哨兵的插入排序
- 排序算法Java实现(直接插入排序)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法总结(一)---- 直接插入排序,希尔排序(java实现)
- 排序算法之直接插入排序的思想以及Java实现
- 数据结构之排序算法Java实现(5)—— 插入类排序之直接插入排序算法
- 插入排序(3种语言实现 c/java/python)
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- 排序算法之直接插入排序(java实现)
- 排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 算法学习(1):排序算法-插入排序及python实现
- 排序算法之冒泡排序、选择排序、直接插入排序(java实现)