数据结构--插入排序(C语言实现)

 需要用到的结构体

struct LNode {
	int Data[MAXSIZE];  //Data为待排序序列数组 
	int Last;  //Last为最后一个元素的数组下标 
};
typedef struct LNode *List;

void InsertionSort(List L);

关于插入排序,是先将要插入的数据提出来,再以这个数据为开始,向前遍历

这里,我们取一个例子来插入排序,假设4,5已排序好

这是比前面所有值都小的情况,那么,另一种情况就是没遍历结束就找到了插入位置(那么我们直接让它跳出循环即可),也就是前一个比后一个小的情况,这时候就不需要交换位置了

所以我们可以写下实现函数

void InsertionSort(List L) {
	int temp = 0;
	//插入n-1次
	for (int i = 1; i <= L->Last; i++) {
		temp = L->Data[i];//保存要插入的数据
		int j = i;
		for (j; j > 0; j--) {
			if (temp < L->Data[j - 1])
				L->Data[j] = L->Data[j - 1];
			//如果不再交换,则找到了插入位置
			else
				break;
		}
		L->Data[j] = temp;
	}
}

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