排序
Uoyaij_
这个作者很懒,什么都没留下…
展开
-
(C语言)双向冒泡排序
void DoubleBubbleSort(int R[],int n){ int right = n - 1; int left = 0; bool flag = true; int i, j, temp; while (flag) { flag = false; for (i = left; i < right; ++i) //从左到右扫描,最大的放右边 { if (R[i] > R[i + 1]) { temp = R[i]; R[i原创 2020-08-19 17:37:00 · 653 阅读 · 0 评论 -
堆排序的简单C语言实现
void Sift(int R[], int low, int high){ int i = low, j = 2 * i + 1; //R[j]是R[i]的左孩子 int temp = R[i]; while (j <= high) { if (j < high && R[j] < R[j + 1]) //若右孩子较大,则把j指向右孩子 j++; if (temp < R[j]) { R[i] = R[j]; //将R原创 2020-08-16 15:07:56 · 101 阅读 · 0 评论 -
简单选择排序
算法介绍选择类排序的主要动作是“选择”,简单选择排序采用最简单的选择方式,从头至尾顺序扫描序列,找出一个最小的关键字,和第一个关键字交换,接着从剩下的关键字中继续这种选择和交换,最终使序列有序.void SelectSort(int R[], int n){ int i, j, k; int temp; for (i = 0; i < n; ++i) { k = i; /*这个循环是算法的关键,它从无序序列挑出一个最小的关键字*/ for (j = i + 1; j <原创 2020-08-16 10:30:21 · 133 阅读 · 0 评论 -
快速排序
void QuickSort(int R[], int low, int high){ int temp; int i = low, j = high; while (low < high) { temp = R[low]; while (j > i && R[j] >= temp) --j; //找到一个小于temp的关键字 if (i < j) { R[i] = R[j]; //放在temp左边 ++原创 2020-08-16 10:08:41 · 76 阅读 · 0 评论 -
折半排序
/*折半排序*/void BinaryInsertSort(int R[], int n){ int i, j, low, mid, high, temp; for (i = 1; i < n; i++) { low = 0; high = i - 1; temp = R[i]; while (low <= high) //找到合适的插入位置high+1 {原创 2020-08-16 09:28:32 · 282 阅读 · 0 评论 -
直接插入排序
/*直接插入排序*/void InsertSort(int R[], int n){ int i, j; int temp; for (i = 1; i < n; i++) { temp = R[i]; //将待排关键字暂存于temp中 j = i - 1; while (j >= 0 && temp < R[j]) { R[j + 1] = R[j]; //后移 --j; //继续比较 } R[j + 1] =原创 2020-08-16 09:09:23 · 160 阅读 · 0 评论