当前位置: 首页 > >

算法演示-C程序设计_图文

C 语言程序设计算法演示
叶斌 yebin88@126.com

排序算法演示
? 冒泡法排序 ? 交换法排序 ? 选择法排序

冒泡法排序
第 一 轮 排 序 第 二 轮 排 序

冒泡法排序
第 三 轮 排 序
第 四 轮 排 序

冒泡法排序
冒泡法排序程序段 #define N 5 ······ for(i=1; i<N; i++)
for(j=0; j<N-i; j++) if(score[j] > score [j+1]) { temp=score [j]; score [j]=score [j+1]; score [j+1]=temp; }

交换法排序

交换法排序

交换法排序
交换法排序程序段 for (i=0; i<n-1; i++) {
for (j=i+1; j<n; j++) {
if (score[j] > score[i]) "交换成绩score[j]和score[i]", "交换学号num[j]和num[i]";
} }

k=0

k=1

选择法排序

k=1

k=2

选择法排序
k=2 k=4

k=3

k=4

选择法排序
选择法排序程序段 for (i=0; i<n-1; i++) {
k = i; for (j=i+1; j<n; j++) {
if (score[j] > score[k]) 记录此轮比较中最高分的元素下标 k = j;
} 若k中记录的最大数不在位置i,则
"交换成绩score[k]和score[i]", "交换学号num[k]和num[i]"; }

查找算法演示
? 顺序查找 ? 折半查找

顺序查找
int Search(long a[], int n, long x) {
int i; for (i=0; i<n; i++) {
if (a[i] == x) {
return (i); } }
return (-1); }
哈,找到了!

折半查找

数组下标 0 1 2 3 4 5 6 第一次循环:99011 99013 99015 99017 99019 ①查找值x=99017

low

mid

high x>a[mid], low=mid+1

第二次循环:99011 99013 99015 99017 99019

low=mid high x=a[mid],找到

哈,找到了!

折半查找

数组下标 0 1 2 3 4 5 6 第一次循环:99011 99013 99015 99017 99019 ②查找值x=99016

low

mid

high x>a[mid], low=mid+1

第二次循环:99011 99013 99015 99017 99019

low=mid high x<a[mid], high=mid-1 第三次循环:99011 99013 99015 99017 99019

high low

不满足low<=high, 循环结束,未找到

唉,没找到!

折半查找
int BinSearch(long a[], int n, long x) {
int low, high, mid; low = 0; high = n - 1; while (low <= high) {
mid = (high + low) / 2; if (x > a[mid]) {
low = mid + 1; } else if (x < a[mid]) {
high = mid - 1; } else {
return (mid); } } return(-1); }



相关推荐


友情链接: 历史学 教育学 农学资料 艺术学习 学习资料网