C语言常见的排序算法
来源:互联网 发布:java兰陵王破解版 编辑:程序博客网 时间:2024/06/03 08:58
(1)直接插入排序
思路:将待插入的数与有序区的数从右到左依次比较。
#include <stdio.h>void insort(int s[], int n)/*自定义函数isort*/{ int i, j; for (i = 2; i <= n; i++)/*数组下标从2开始,0做监视哨,1一个数据无可比性*/ { s[0] = s[i];/*给监视哨赋值*/ j = i - 1;/*确定要进行比较的元素的最右边位置*/ while (s[0] < s[j]) { s[j + 1] = s[j];/*数据右移*/ j--;/*移向左边一个未比较的数*/ } s[j + 1] = s[0];/*在确定的位置插入s[i]*/ }}void main(){ int a[11], i;/*定义数组及变量为基本整型*/ printf("请输入10个数据:\n"); for (i = 1; i <= 10; i++) scanf("%d", &a[i]);/*接收从键盘中输入的10个数据到数组a中*/ printf("原始顺序:\n"); for (i = 1; i < 11; i++) printf("%5d", a[i]);/*将未排序前的顺序输出*/ insort(a, 10);/*调用自定义函数isort()*/ printf("\n插入数据排序后顺序:\n"); for (i = 1; i < 11; i++) printf("%5d", a[i]);/*将排序后的数组输出*/ printf("\n");}
(2)希尔排序
#include <stdio.h>void shsort(int s[], int n)/*自定义函数shsort*/{ int i, j, d; d = n / 2;/*确定固定增量值*/ while (d >= 1) { for (i = d + 1; i <= n; i++)/*数组下标从d+1开始进行直接插入排序*/ { s[0] = s[i];/*设置监视哨*/ j = i - d;/*确定要进行比较的元素的最右边位置*/ while ((j > 0) && (s[0] < s[j])) { s[j + d] = s[j];/*数据右移*/ j = j - d;/*向左移d个位置*/ } s[j + d] = s[0];/*在确定的位置插入s[i]*/ } d = d / 2;/*增量变为原来的一半*/ }}void main(){ int a[11], i;/*定义数组及变量为基本整型*/ printf("请输入10个数据:\n"); for (i = 1; i <= 10; i++) scanf("%d", &a[i]);/*从键盘中输入10个数据*/ shsort(a, 10);/*调用shsort()函数*/ printf("排序后的顺序是:\n"); for (i = 1; i <= 10; i++) printf("%5d", a[i]);/*将排好序的数组输出*/printf("\n");}(3)冒泡排序
#include <stdio.h>void main(){ int i, j, t, a[11];/*定义变量及数组为基本整型*/ printf("请输入10个数:\n"); for (i = 1; i < 11; i++) scanf("%d", &a[i]);/*从键盘中输入10个数*/ for (i = 1; i < 10; i++)/*变量i代表比较的趟数*/ for (j = 1; j < 11-i; j++)/*变量j代表每趟两两比较的次数*/ if (a[j] > a[j + 1]) { t = a[j];/*利用中间变量实现俩值互换*/ a[j] = a[j + 1]; a[j + 1] = t; } printf("排序后的顺序是:\n"); for (i = 1; i <= 10; i++) printf("%5d", a[i]);/*将冒泡排序后的顺序输出*/ printf("\n");}
阅读全文
2 0
- C语言常见的一些排序算法
- C语言常见的排序算法
- C语言常见排序算法
- C语言常见排序算法
- C语言常见排序算法
- c语言常见排序算法
- 常见排序算法的C语言实现之堆排序
- 几种常见排序算法的c语言实现
- 几种常见排序算法的C语言实现
- 常见的排序算法对比及实现C语言版本
- 几种常见排序算法的c语言实现
- 几种常见排序算法的c语言实现
- 常见的几种内排序算法以及实现(C语言)
- 常见的几种内排序算法以及实现(C语言)
- 常见的排序算法C语言实现(—)
- C语言中三种常见排序算法分析
- C语言中三种常见排序算法分析
- C语言中三种常见排序算法分析
- LeetCode-485 Max Consecutive Ones
- 覆铜和网络间距线宽度的规则设计
- 清除缓存
- 进程间通信—local socket
- sizeof()计算结构体的大小
- C语言常见的排序算法
- node介绍和mongodb数据库的安装
- 100行python代码爬取5万条网易新闻评论
- 如何去ping一个网站?ping是什么意思
- JavaScript实战演练1.1
- Java高并发,如何解决,什么方式解决
- Maven错误: 找不到或无法加载主类
- SpringMVC
- hdu3861