直接插入排序
来源:互联网 发布:原生js模拟select 编辑:程序博客网 时间:2024/06/06 18:56
直接插入排序
一、基本思想
将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录增1的表。
二、时间复杂度
为O(n^2),但是它总的性能比冒泡排序和简单选择排序好一些。
三、代码实现
/*******************************************************************************************【直接插入排序】Author:tmwdate:2017-10-31********************************************************************************************/#include <stdio.h>#include <stdlib.h>int* direct_insert_sort( int array[] , int array_size ){ array[0] = 0;//数组的第一位用来做temp,相当于在数组首位挖了个坑 int i,j; for( i = 2 ; i <= array_size ; i++ )//刚开始,认为第一个数即为有序的 { if( array[i] < array[i-1] )//后一个元素比前一个元素小,则需要移动位置了,同时往首位填坑,如此循环 { array[0] = array[i]; for( j = i-1 ; array[j] > array[0] ; j-- ) array[j+1] = array[j]; array[j+1] = array[0];//将当前i所指向的元素放入正确的位置 } } return array;}int main(){ int *array; int i,array_size; printf("请输入数组元素的个数\n"); scanf("%d",&array_size); array = (int*)malloc(sizeof(int)); printf("请输入 %d 个元素\n",array_size); for( i = 1 ; i <= array_size ; i++ ) scanf("%d",&array[i]); array = direct_insert_sort( array , array_size ); printf("经直接插入排序后,数组元素顺序输出为:\n"); for( i = 1 ; i <= array_size ; i++ ) printf("%d ",array[i]); return 0;}
四、程序运行结果
阅读全文
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- Swift开源项目精选
- 从百度云下载批量视频到本地
- cocoapods的使用
- 链式前向星教学
- Redis缓存
- 直接插入排序
- java Reflection 反射机制
- 使用Jmeter进行http接口测试
- Unity架构之路-小试牛刀-3-TimerManager
- Chrome表单自动填充如何取消
- 数据挖掘-FP-tree算法
- linux里面解压LZO
- android .9 图重新编辑报错wenti
- HttpComponents之httpclient基本使用方法