排序算法——直接插入法(超详细)

例如:2,1,8,3从小到大排序

步骤:

1.假设该数组为a[],先看第一个数2,一个数必然有序,所以遍历的时候,n个数只需要遍历n-1次;

2.接着排1,排哪个先将哪个拿出来 tmp=1;(假如此时1下标为n,2的下标为j,所以j=n-1)

1<2,所以a[j+1]=a[j](将2后移一位,1已经拿出来了,1原来位置是空的),比完一次j要减1,tmp继续和a[j]比,因为2已经是第一个元素,所以1放在2原来位置。

3.后面8,3,同理。

代码如下

#include
using namespace std;

typedef int Status;
typedef int ElemType;

typedef struct{
	ElemType *elem;
	int length;
}Sqlist;

//初始化
void Initlist_Sq(Sqlist &L)
{
	L.elem=new ElemType[10];
	L.length=0;
	if(L.elem)
	{
		cout<<"初始化成功"<>n; 
	cout<<"请输入你要你想要建立顺序表中的值"<>L.elem[i];
		L.length++;
	}
	cout<<"建立成功!"<=0 && L.elem[j]>tmp;j--)//从需要排序元素前一个开始排序,循环需要满足两个条件 
 			{                                   //(1),j有意义(不小于0)(2)需要排序元素前面元素中 
				L.elem[j+1]=L.elem[j];          //存在大于该元素的值 
			}
			L.elem[j+1]=tmp;
		}
	}
	cout<<"排序成功"<

代码结果如下;

排序算法——直接插入法(超详细)_第1张图片

 

你可能感兴趣的:(数据结构,排序算法,c++)