插入排序
来源:互联网 发布:苹果ios6系统能用软件 编辑:程序博客网 时间:2024/06/06 19:30
插入排序 是一种对原有序列排序的方法,逐步使原序列的有序序列增长
折半插入排序 是在寻找 当前元素的位置时采取了折半查找的方法
#include"stdio.h"#include"stdlib.h"typedef struct SqList{int * elem;int length;int MaxSize;}SqList;void CreatList(SqList &L){L.elem=(int *)malloc(100 * sizeof(int));if(!L.elem)exit(0);else{ L.length = 0; L.MaxSize = 100; int i, n;printf("please shu ru yuan su ge shu:\n");scanf("%d", &n);L.length = n;printf("please shu ru yuan su:\n");for(i=1;i<=L.length;i++)scanf("%d", &L.elem[i]);}}void print(SqList L){int i;for(i=1;i<=L.length;i++)printf("%d ", L.elem[i]);printf("\n");}void InsertSort(SqList &L) //对顺序表L直接插入排序{ int i, j;for(i=2;i<=L.length;++i)if(L.elem[i] < L.elem[i-1]){L.elem[0]=L.elem[i];for(j=i-1;L.elem[j]>L.elem[0];--j)L.elem[j+1] = L.elem[j];L.elem[j+1] = L.elem[0];}}void BInsertSort(SqList &L) //折半插入排序{ int i, j, low, high, mid; for(i=2;i<=L.length;++i) { L.elem[0] = L.elem[i]; low = 1; high = i-1; while(low <= high) { mid = (low+high)/2; if(L.elem[0] < L.elem[mid]) high = mid-1; else low = mid+1; } for(j=i-1;j>=high+1;--j) L.elem[j+1] = L.elem[j]; L.elem[high+1] = L.elem[0]; }}int main(){ SqList L; CreatList(L); print(L); //InsertSort(L); BInsertSort(L); print(L); return 0;}
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- kingcms自定义模块验证编写规则
- iphone-common-codes-ccteam源代码 CCNSPredicate.m
- sqlServer基本操作
- iphone-common-codes-ccteam源代码 CCNSRegularExpression.h
- iphone-common-codes-ccteam源代码 CCNSRegularExpression.m
- 插入排序
- iphone-common-codes-ccteam源代码 CCNSString.h
- 删除d文件夹和及其下级文件夹和其中的文件(没有提示)
- iphone-common-codes-ccteam源代码 CCNSString.m
- iphone-common-codes-ccteam源代码 CCNSThread.h
- iphone-common-codes-ccteam源代码 CCNSThread.m
- ldap - 设置一个基本的OpenLDAP Server
- iphone-common-codes-ccteam源代码 CCNSTimeZone.h
- grep的用法