直接插入排序
2015-10-23 20:11
316 查看
#include <stdio.h> array[]={50,10,90,30,70,40,80,60,20}; int nsize = sizeof(array) / sizeof(int); void InsertSort(int list[], int length) { int i,j,temp; for (i = 1;i < length;i++)//读取数组第一条记录(注意无序区是从第二个元素开始的,第一个元素作为哨兵元素) { temp=list[i];//遍历有序序列如果有序序列中最末元素比临时元素(无序序列第一个元素)大,则将有序序列中比临时元素大的元素依次后移 for (j=i-1;j>=0&&list[j]>temp;j--) list[j+1]=list[j];//将临时元素插入到腾出的位置中 list[j+1]=temp; } } void InsertSort1(int list[], int length)//这是InsertSort简化 { int i, j,temp; for (i = 1; i < length; i++) //读取数组第一条记录(注意无序区是从第二个元素开始的,第一个元素作为哨兵元素) for (j = i - 1; j >= 0 && list[j] > list[j + 1]; j--)//检查list[j] > list[j + 1]作为调整位置的关键点。 { temp = list[j]; array[j] = list[j + 1]; array[j + 1] = temp; } } void Display(int arr[],int n)//打印结果 { int i; printf("\n**********展示结果**********\n"); for (i=0;i<n;i++) printf("%d ",arr[i]); printf("\n**********展示完毕**********\n"); } void main() { printf("排序前:"); Display(array,nsize); InsertSort(array,nsize); printf("\n排序后:"); Display(array,nsize); InsertSort1(array,nsize); printf("\n排序后:"); Display(array,nsize); }
相关文章推荐
- 插入排序
- C#中sizeof的用法实例分析
- 浅析C语言中的sizeof
- 深入sizeof的使用详解
- C语言中的sizeof操作符用法及和strlen的区别
- sizeof()的简单介绍
- php实现插入排序
- 基于Sizeof与Strlen的区别以及联系的使用详解
- 浅析C/C++中被人误解的SIZEOF
- Java数据结构及算法实例:插入排序 Insertion Sort
- 解决不用sizeof求出int大小的方法
- C++ sizeof 实例解析
- C语言中关于sizeof 和 strlen的区别分析
- 对C语言中sizeof细节的三点分析介绍
- c++几种基本的插入排序(图文)
- Java排序算法总结之插入排序
- JAVA算法起步之插入排序实例
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- python插入排序算法的实现代码
- 关于操作系统各种数据类型的内存分配的一点探讨