插入排序-学习笔记
插入排序的思想主要是,把没有排序的数插入到已经拍好序的数组中的恰当位置,在最开始的时候,待排序的数据从a[1]中选取,因为数组中的第一个数最看作成是已经排好序的数组了,然后把待排序的数和排好序的数组从后向前依次比较,当发现比排好序的数大时,则插入到这个数的后面,插入排序是稳定的,
代码如下:
#include<cstdio> int main(){ int a[20],n,temp; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int i=1;i<n;i++){ //从待排序数组中的选取第一个数 temp=a[i]; //把待排数据放到临时数据中 int j=i-1; //这个J代表的是已经排好序的最后一个数的下角标 while(j>=0&&a[j]>temp){ //当J没有达到数组的第一个数,并且临时数据比当前排好序的数小时,进去循环 a[j+1]=a[j]; //将排好序的数组向后移动 j--; } if(j!=i-1){ //这个主要是当没有发生替换时,防止多余的计算 a[j+1]=temp; //把临时数据插入到排好序数组中的恰当位置 } } for(int i=0;i<n;i++){ printf("%d ",a[i]); } }

浙公网安备 33010602011771号