资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
查找与排序查找与排序 查找与排序 查找 顺序查找 折半查找 排序 直接插入排序 简单选择排序 冒泡排序查找与排序 查找 查找 根据指定的关键字查找数组中的特定元素。 常用方法 顺序查找 折半查找查找与排序 顺序查找 顺序查找 适用于小型和(或)没有排序的数组。 用关键字与数组的元素依次进行比较。 平均而言,要与数组的一半元素进行比较6572837997877957917887查找表关键字查找与排序#define N 10void main() int listN+1=0,65,72,83,79,97,87,75,57,91,78;int key,i;printf(“Input search key:“);scanf(“%d“,for (i=1;(listi!=key)else printf(“Success! The position is %d.“,i);顺序查找 顺序查找举例(cw1009.c)65728379978779579178查找与排序 折半查找 折半查找 适用于已经排好序的数组。 用关键字与数组的中间元素比较 如果相等,则查找结束找到 如果keymiddle,则继续在后半部分查找 如果没有可查找的部分,则查找结束没有找到5765727578798387919783lowmidhigh查找与排序 折半查找 折半查找举例(cw1010.c)#include #define N 10 void main() int i, low, mid, high, key, found;int listN+1=0,57,65,72,75,78,79,83,87,91,97;printf(“Sorted list:n“);for (i=1;ilistmid) low=mid+1;else if (key=listmid) found=1;else high=mid-1;if (found) printf(“Success! The position is %d.“, mid);else printf(“Not found!“); 考虑不要found变量查找与排序 排序 排序 按特定的顺序来安排数据。 常用方法 直接插入排序 简单选择排序 冒泡排序查找与排序 数据插入 问题 把一个数据插入到已排好序的有序表中,从而得到一个新 的、长度增1的有序表。57657275787987919783576572757879838791975765727578798791971.找到插入点2.腾出位置3.插入数据查找与排序 数据插入 数据插入(cw1011.c) 把一个数据插入到一个有序表中。#include #define N 20 void main() int i, j, x, len=9;int listN=57,65,72,75,78,79,87,91,97;printf(“Sorted list:n“);for (i=0;ilisti)j-) listj=listj-1;listi=x;len+;printf(“The new list:n“);for (i=0;i #define N 10 void main() int i, j, k, len;int listN, x;printf(“Input several integers to construct a listn“);printf(“How many?(listj)k-) listk=listk-1;listj=x;printf(“Finished! The list has been sorted:n“);for (i=0;i #define N 10 void main() int i, j, len, min;int listN, tmp;printf(“Input several integers to construct a list.n“);printf(“How many?(listj) min=j;tmp=listi; listi=listmin; listmin=tmp;printf(“Finished! The list has been sorted:n“);for (i=0;i #define N 10 void main() int i, j, len;int listN, tmp;printf(“Input several integers to construct a list.n“);printf(“How many?(listj+1) tmp=listj;listj=listj+1;listj+1=tmp;printf(“Finished! The list has been sorted:n“);for (i=0;ilen;i+) printf(“%-4d“,listi); 循环len-1趟第i趟,数列 list0 listlen-i-1 中的相邻元素两两比 较查找与排序 小结 查找和排序是两类常用的应用。 查找是根据指定的关键字查找数组中的特定元素。 顺序查找 折半查找 排序为按特定的顺序来安排数据。 直接插入排序 简单选择排序 冒泡排序
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号