首页 > 代码库 > 直接插入排序
直接插入排序
#include "stdafx.h" void insertSort(int* array,int len ) { // [0,i-1] [i,n-1] // 直接插入排序: [0,i-1]是已排序的序列 [i,n-1]是没有排序的序列 // 算法的核心思想:在已排序序列的[0,i-1]找到合适的位置插入当前要排序的元素i。 // 分两种情形: // 1、元素i大等于i-1,那么序列[0,i-1]不需要移动,[0,i]就已经是已排序序列 // 2、元素索引x大于元素i,继续找索引x前面一个元素,直到找到索引x-1比元素i要小, // 也就是找到一个比它后面一个元素大,比它前面的一元素小的位置,把当前元素i插入 int i,j,temp; for( i = 1; i < len ;i++ ) { temp = array[i]; for( j = i - 1;(j >= 0) && (array[j] > temp); j-- ) { array[j+1] = array[j]; } if( j != i - 1) { array[j+1] = temp; } } } int main(int argc, char* argv[]) { int a[]={12,54,6,3,4,6,76,33}; int i; insertSort(a,sizeof(a)/sizeof(a[0])); for( i = 0 ; i < sizeof(a)/sizeof(a[0]);i++ ) { printf("%d ",a[i]); } printf("\n"); return 0; }
直接插入排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。