首页 > 编程知识 正文

c语言的排序函数,使用函数排序c语言

时间:2023-05-05 08:18:00 阅读:257728 作者:189

直接插入排序 //直接插入排序void InsertSort(int R[], int n){ int i, j; int tmp; for (i = 1; i < n; i++) { if (R[i] < R[i] - 1) { tmp = R[i]; j = i - 1; do { R[j + 1] = R[j]; j--; } while (j >= 0 && R[j] > tmp); R[j + 1] = tmp; } }} 折半插入排序 //折半插入排序void BinInsertSort(int R[], int n){ int i, j, low, high, mid; int tmp; for (i = 1; i < n; i++) { if (R[i] < R[i - 1]) { tmp = R[i]; low = 0; high = i - 1; while (low <= high) { mid = (low + high) / 2; if (tmp < R[mid]) high = mid - 1; else low = mid + 1; } for (j = i - 1; j >= high + 1; j--) R[j + 1] = R[j]; R[high + 1] = tmp; //重点 } }} 希尔排序 //希尔排序void ShellSort(int R[], int n){ int i, j, d; int tmp; d = n / 2; while (d > 0) { for (i = d; i < n; i++) //对所有组采用直接插入排序 { tmp = R[i]; j = i - d; while (j >= 0 && R[j] > tmp) { R[j + d] = R[j]; j -= d; } R[j + d] = tmp; } d = d / 2; }} 快速排序 //快速排序void QuickSort(int R[], int s, int t){ int i; if (s < t) { i = partition(R, s, t); QuickSort(R, s, i - 1); QuickSort(R, i + 1, t); }}int partition(int R[], int s, int t){ int i = s, j = t; int tmp = R[i]; while (i < j) { while (j > i&&R[j] > tmp) j--; R[i] = R[j]; while (i < j&&R[i] < tmp) i++; R[j] = R[i]; } R[i] = tmp; return i;} 简单选择排序 //简单选择排序void SelectSort(int R[], int n){ int i, j, min, tmp; for (i = 0; i < n - 1; i++) { min = j; for (j = i + 1; j < n; j++) { if (R[j] < R[min]) min = j; } if (min != i) { tmp = R[min]; R[min] = R[i]; R[i] = tmp; } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。