浅析插入排序
插入排序是程序员经常用到的算法,尽管简单,但也算比较经典的算法之一,简单而不简约吧。鄙人不才,最近看了插入排,让我脑洞大开,就想记录下来与大家分享一下。
所谓插入排序,就是将一个数插入已经有序的序列中,操作完毕后,序列仍然有序。算法适用于少量数据的前提,时间复杂度为o(n^2),为稳定排序(数值相等的若干个数,排序之后彼此的顺序不变,通俗地说)。
一、基本思路
①开始将序列第一个数设为比较对象,记为s[0]
②设置待查找的位置为j.
③在待排序序列中进行搜索,将s[j]和s[j-1]进行比较.
④倘若s[j]小于s[j-1],彼此交换位置,直到s[j]>=s[j-1]
二、算法步骤图
a:初始化时—->—–>
—->
b: —–>—–>
c:不用移动
d:……..
e:—–>—–>
三、代码实现
/**************************
File_Name:quickSort.c
Email:18070145092@163.com
Auther:xiaozhu
TIme:Sun 27 Sep 2015
***************************/
#include <stdio.h>#include <stdio.h>
void insert_Sort(int str[],int length){
int i,j;
int n=length;
int target;
for(i=1;i<n;i++){
j=i;
target=str[i];
while(j>0&&target<str[j-1]){
str[j] = str[j - 1];
j--;
}
str[j]=target;
}
}
int main()
{
int str[]={31,59,26,41,58};
int sum=sizeof(str)/sizeof(str[0]);
int i;
insert_Sort(str,sum);
for(i=0;i<sum;i++)
printf("%d\n",str[i]);
return 0;
}