数据结构算法自学笔记 大话思路与伪代码
以下为笔者自学过程中觉得需要记录的东西,并不代表正确且专业的知识,所以如果大家看到有不对的地方,希望大家能高抬贵手多多指出,谢谢!(持续更新)
一、排序
一)插入排序
插入排序对于少量元素的排序是一个比较有效的算法。
白话思路:对于一个未排列的数组,暂且称当前正在排列移动的数字称作当前数。一般当前数从数组的第二位开始,遵循从当前数的当前位置向前开始比对,例如:a[1]需要和下标为1之前的数字一一比较,即与a[0]进行比较,也就是当前数从右向左依次比较。如果比较过程中,发现比当前数大的比较数,怎么将比较数往后移动一位,同时,该比较数之前的数同意向后移动一位,直到一个比当前数小的数字,将当前数插入到该数字之后的位置上。
伪代码:
INSTERTION-SORT(A) //A为传入的参数 是一个数组
for j=1 to A.length
key = A[j] //将当前待排序的元素备份
i = j-1 //将下标定位到当前待排序数的前一位
while(i>0 && A[i]>key) //当前排序的数字依次与下标之前的元素比较 为的是找到比当前排序数大的元素
//然后将它们依次后移一位,直到找到比key小的值,停止,退出循环
A[i+1] = A[i]
i=i-1
A[i+1] = key //将之前备份的元素插入到循环结束处,该数完成比较插入动作
图示:
总结:也就是把当前数抽出,并移动比当前数大的数,最后将当前数插入到循环停止的下标处。
(未完待续)
来源:CSDN
作者:TaoA_
链接:https://blog.csdn.net/TaoA_/article/details/103778625