1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C语言之冒泡排序 快速排序法 希尔排序法

C语言之冒泡排序 快速排序法 希尔排序法

时间:2024-05-28 05:04:04

相关推荐

C语言之冒泡排序 快速排序法 希尔排序法

众所周知编程排序方法众多而且程序的好坏就取决于算法的使用

下面是博主现在会的几种排序方法希望对大家有所帮助。

希尔排序法:/** @Author: Stylle* @Date: -11-14 15:52:03* @LastEditors: Stylle* @LastEditTime: -11-14 15:52:16* @FilePath: \undefinedc:\Users\23999\Desktop\text.c*/#include <stdio.h>void out(int s[]) //数组输出{int y;for (y = 0; y < 10; y++){printf(“% d”, s[y]);}}void main(){int s[10] = {10, 9, 8, 6, 7, 5, 4, 3, 2, 1};int end = 9, start = 0;//开始的下标和结束的下标int increment = end - start + 1; //长度int i = 0, temp = 0;do //进行判断长度是否大于1{increment = increment / 3; //for (i = start + increment; i <= end; i++) //参考插入法可理解{if (s[i - increment] > s[i]){temp = s[i];int j = i - increment;do{s[j + increment] = s[j];j -= increment;} while (j >= start && s[j] > temp);s[j + increment] = temp;}}} while (increment > 1);out(s);}

冒泡排序:

#include <stdio.h>int main(){int a[10];int i, n, c;printf(“请输入十个数:\n”);//循环输入模块for (i = 0; i < 10; i++)scanf(“% d”, &a[i]);//循环判断for (i = 0; i < 10; i++){for (n = 0; n < 10; n++){if (a[i] < a[n]){c = a[n];a[n] = a[i];a[i] = c;}}}//循环输出模块for (i = 0; i < 10; i++){printf(“% d “, a[i]);}return 0;}

快速排序法:

#include <stdio.h>void sort(int s[], int left, int right) //进行排序{if (left < right) //判断取的key两边的数组下标是否符合排序规则{int i = left, j = right;int key = s[left];while (i < j){while (i < j && key <= s[j]) //寻找数组小于key的下标(从右到左)j–;s[i] = s[j];while (i < j && key >= s[i]) //寻找数组大于key的下标(从左到右)i++;s[j] = s[i];}s[i] = key;sort(s, left, i - 1); //递归子表1,在key的左边的下标sort(s, i + 1, right); //递归子表2,在key的右边的下标}}void out(int s[]) //输出数组{int i;for (i = 0; i < 10; i++){printf(“% d”, s[i]);}}void main(){int s[10] = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1};out(s);printf(“\n”);sort(s, 0, 9);out(s);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。