直接插入排序(单链表排序)
assert函数介绍
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
-
#include <assert.h>
-
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行:
一般用assert判断指针是否为空和一个条件,不要判断多个条件,请注意。
有序区 无序区
#include<iostream>using namespace std;int main(){ int a[]={98,76,109,34,67,190,80,12,14,89,1}; int k=sizeof(a)/sizeof(a[0]); int i,j; for(i=1;i<k;i++)//循环从第2个元素开始 第一次循环找到待排序元素 { if(a[i]<a[i-1])//从小到大排序,如果a[i]>a[i-1],说明有序,直接跳过,到下一个元素对比 { int temp=a[i]; //记录无序区待排元素值 for(j=i-1;j>=0 && a[j]>temp;j--)//第二次循环,从有序区尾部开始往前查找,找到在有序区插入的位置,j=i-1 { a[j+1]=a[j]; //将插入位置后面元素往后移1位 } //若不进入第二个for循环,说明temp值比有序区元素都大,直接插入有序区元素尾部,即a[i]=temp a[j+1]=temp;//,经过了j--,再j+1,故此处执行a[j+1]=temp,将temp元素插入 } } for(int f=0;f<k;f++) { cout<<a[f]<<" "; } return 0;}

浙公网安备 33010602011771号