易语言快速排序(quick sort)算法源码

.版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .子程序 quicksort .参数 list, 整数型, 数组 .参数 m, 整数型 .参数 n, 整数型 .局部变量 key, 整数型 .局部变量 i, 整数型 .局部变量 j, 整数型 .局部变量 k, 整数型 .如果真 (m < n) k = choose_pivot (m, n) swap (list [m], list [k]) key = list [m] i = m + 1 j = n .判断循环首 (i ≤ j) .判断循环首 (i ≤ n 且 list [i] ≤ key) i = i + 1 .判断循环尾 () .判断循环首 (j ≥ m 且 list [j] > key) j = j - 1 .判断循环尾 () .如果真 (i < j) swap (list [i], list [j]) .如果真结束 .判断循环尾 () swap (list [m], list [j]) quicksort (list, m, j - 1) quicksort (list, j + 1, n) .如果真结束 ' void quicksort(int list[], int m, int n) ' { ' int key, i, j, k; ' if (m < n) ' { ' k = choose_pivot(m, n); ' swap(&list[m], &list[k]); ' key = list[m]; ' i = m + 1; ' j = n; ' while (i <= j) ' { ' while ((i <= n) && (list[i] <= key)) ' i++; ' while ((j >= m) && (list[j] > key)) ' j--; ' if (i < j) ' swap(&list[i], &list[j]); ' } ' // 交换两个元素的位置 ' swap(&list[m], &list[j]); ' // 递归地对较小的数据序列进行排序 ' quicksort(list, m, j - 1); ' quicksort(list, j + 1, n); ' } ' } .子程序 swap .参数 x, 整数型, 参考 .参数 y, 整数型, 参考 .局部变量 temp, 整数型 temp = x x = y y = temp ' void swap(int *x, int *y) ' { ' int temp; ' temp = *x; ' *x = *y; ' *y = temp; ' } .子程序 choose_pivot, 整数型 .参数 i, 整数型 .参数 j, 整数型 返回 ((i + j) ÷ 2) ' int choose_pivot(int i, int j) ' { ' return((i + j) / 2); ' } .子程序 _按钮1_被单击 .局部变量 list, 整数型, , "30000" .局部变量 i, 整数型 .局部变量 temp, 整数型 .局部变量 time, 整数型 置随机数种子 () time = 取启动时间 () .计次循环首 (取数组成员数 (list), i) list [i] = 取随机数 (, ) .计次循环尾 () quicksort (list, 1, 取数组成员数 (list)) 调试输出 (list) 调试输出 (取启动时间 () - time)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

易语言快速排序(quick sort)算法源码》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注