void sort1(int tmp[],int len){ int record; int j; for(int i=1;i<len;i++){ if(tmp[i]<tmp[i-1]){ record=tmp[i]; tmp[i]=tmp[i-1]; if(i==1){ tmp[0]=record; }else{ for(j=i-2;record<tmp[j];--j) tmp[j+1]=tmp[j]; tmp[j+1]=record; } } } for(int j=0;j<len;j++){ printf("%d\n",tmp[j]); } }
代码如上所示, 可以在外层循环里面加一个if判断语句, 如果当前有序序列只有一个元素,且新加入的元素是倒序的, 相当于直接将这两个元素交换。