文档详情

C语言程序设计第8章 数组.ppt

发布:2017-12-11约7.69千字共49页下载文档
文本预览下载声明
如何实现两数交换? temp = score[j]; score[j] = score[i]; score[i] = temp; temp score[j] score[i] ? 70 50 70 50 70 【例8.8】交换法从高到低排序 void DataSort(int score[], int n) /*交换法排序*/ { int i, j, temp; for (i=0; in-1; i++) { for (j=i+1; jn; j++) { if (score[j] score[i]) /*从高到低*/ { temp = score[j]; score[j] = score[i]; score[i] = temp; } } } } 选择法排序 k=1 k=2 k=0 k=1 选择法排序 k=3 k=4 k=3 k=4 选择法排序 选择法排序 for (i=0; in-1; i++) { k = i; for (j=i+1; jn; j++) { if (score[j] score[k]) 记录此轮比较中最高分的元素下标 k = j; } 若k中记录的最大数不在位置i,则 交换成绩score[k]和score[i], 交换学号num[k]和num[i]; } void DataSort(int score[], long num[], int n) /*选择法*/ { int i, j, k, temp1; long temp2; for (i=0; in-1; i++) { k = i; for (j=i+1; jn; j++) { if (score[j] score[k]) { k = j; /*记录最大数下标位置*/ } } if (k != i) /*若最大数不在下标位置i*/ { temp1 = score[k]; score[k] = score[i]; score[i] = temp1; temp2 = num[k]; num[k] = num[i]; num[i] = temp2; } } } 【例8.8】成绩从高到低顺序 8.4排序和查找 查找(Searching)算法 顺序查找 折半查找 【例8.10】顺序查找学号 int LinSearch(long num[], long x, int n) { int i; for (i=0; in; i++) { if (num[i] == x) { return (i); } } return (-1); } 哈,找到了! 事先不必排序 【例8.11】折半查找学号 哈,找到了! 按升序排序 10122 10124 10126 10128 10130 【例8.11】折半查找学号 唉,没找到! 10122 10124 10126 10128 10130 int BinSearch(long num[], long x, int n) { int low, high, mid; low = 0; high = n - 1; while (low = high) { mid = (high + low) / 2; if (x num[mid]) { low = mid + 1; } else if (x num[mid]) { high = mid - 1; } else { return (mid); } } return(-1); } 找到时返回下标位置 找不到时 返回-1 若未按学号排序, 则如何修改程序? void DataSort(
显示全部
相似文档