C语言及程序设计进阶例程-25 排序问题及其求解
来源:互联网 发布:东华软件 薛向东 编辑:程序博客网 时间:2024/05/29 18:05
贺老师教学链接 C语言及程序设计进阶 本课讲解
快速排序实现
#include<stdio.h>void quicksort(int data[],int first,int last){ int i, j, t, base; if (first>last) return; base=data[first]; /*用首元素作为基数*/ i=first; j=last; while(i!=j) /*重复下面的过程,直到i和j相遇*/ { while(data[j]>=base && i<j) /*j从右向左,找到小于基数的元素*/ j--; while(data[i]<=base && i<j) /*i从左向右,找到大于基数的元素*/ i++; /*当i和j没有相遇有时候,交换两个数*/ if(i<j) { t=data[i]; data[i]=data[j]; data[j]=t; } } data[first]=data[i]; /*将i,j相遇处的值保存在基数位置*/ data[i]=base; /*将基数保存在其应该的位置*/ quicksort(data,first,i-1); /*用同样的策略,递归处理左边的部分*/ quicksort(data,i+1,last); /*用同样的策略,递归处理右边的部分*/}int main( ){ int data[10] = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8}; quicksort(data, 0,9); int i; for(i=0; i<10; i++) printf("%d ", data[i]); printf("\n"); return 0;}
非比较类排序算法:简单计数排序
#include <stdio.h>int main(){ int A[10] = {6,1,12,6,18,1,18,7,0,6}; /*通过初始化给出待排序值*/ int C[21] = {0}; /*用于计数的C数组的所有元素初值为0*/ int i, j; /*为每一个待排序的数计数*/ for(i=0; i<10; i++) C[A[i]]++; /*例如,A[i]为6时,C[6]++,C[i]是i出现的次数*/ /*根据计数信息输出*/ for(i=0; i<21; i++) /*考察待排序数据范围内的每一个数i*/ for(j=1; j<=C[i]; j++) /*输出C[i]个i,此即是排序的结果*/ printf("%d ", i); printf("\n"); return 0;}
1 0
- C语言及程序设计进阶例程-25 排序问题及其求解
- C语言及程序设计进阶例程-24 查找问题及其求解
- C语言及程序设计进阶例程-6 递归法问题求解
- C语言及程序设计进阶例程-26 回溯溯法问题求解
- C语言及程序设计进阶例程-27 贪心法问题求解
- C语言及程序设计进阶例程-28 动态规划法问题求解
- C语言及程序设计进阶例程-30 联合体及其应用
- C语言及程序设计进阶例程-37 二进制文件及其读写
- C语言及程序设计进阶例程-13 结构体数组及其应用
- C语言及程序设计进阶例程-29 枚举类型及其应用
- C语言及程序设计进阶例程-32 位运算及其应用
- C语言及程序设计进阶例程-38 非标准文件及其操作
- C语言及程序设计初步例程-35 问题求解方法——迭代
- C语言及程序设计进阶例程-7 递归经典:汉诺塔
- C语言及程序设计进阶例程-5 认识递归
- C语言及程序设计进阶例程-11 体验结构体
- C语言及程序设计进阶例程-14 开发一个电子词典
- C语言及程序设计进阶例程-17 认识链表
- 类模板——求数组最大值
- Count Primes
- Android实战技巧之三十七:图片的Base64编解码
- 软件抄袭与创新的思考
- 字符集和字符编码
- C语言及程序设计进阶例程-25 排序问题及其求解
- github代码提交(简单直接命令行方式)
- Python数据类型之数字类型、字符串类型
- web python -- WSGI接口GET请求
- C语言及程序设计进阶例程-26 回溯溯法问题求解
- 运行一个简单的C#程序
- windows访问虚拟机中的linux
- C语言及程序设计进阶例程-27 贪心法问题求解
- 2015062208 - 公交卡事件