数据结构基本算法大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法
/***冒泡算法思想:两个泡泡,大的在后面,小的在后面***/
#include
void bubble(int a[],int n)
{
int temp=0;
int lastexchange=0; /***传递边界***/
int border=n-1;
for(int i=0;i { bool sort=true; for(int j=0;j { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; sort=false; /***两两交换,还得工作***/ lastexchange=j; /***新的边界,解决了不在遍历全部元素,而是从最后交换那个位置开始***/ } } border=lastexchange; /***给它新的边界***/ if(sort) /***sort==trune才做,每一轮循环如果有交换用里面的false,如果哪一次循环一次都没有交换那么就不会执行交换,用外面的true,就退出循环***/ { break; } } } int main() { int a[10],i; printf("请输入10个整数:\n"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } bubble(a,10); printf("bubble后:\n"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); } /***插入排序思想:把它看作摸牌过程。首先手里面有一张牌,所以i=1;摸第二张牌时和手里牌比较,比第一张牌小则往前,摸第二张牌,和前面两张牌比较,比他们都小则 移动到最前面,剩下两张牌向后移动。***/ #include void insert(int a[],int n) { int temp,i,j;