C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些。
- 简单交换法排序
/*简单交换法排序
根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置
交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动
不稳定
*/
#include<windows.h>
#include<stdio.h>
void main(){
int i,j,arr[]={,,,,,,,,,},t;
int size = sizeof(arr)/sizeof(int);//计算数组的大小
for(i = ;i< size-;i++){//n个数进行n-1轮比较
for(j = i+;j< size;j++)//每一轮比较时,后面的数与i为下标的数比较
if(arr[j]<arr[i]){//如果i为下标的数比后面的一个数大,将两个数交换位置
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
} for(i = ;i< size;i++){//输出
printf("%d ",arr[i]);
} system("pause");
} - 直接选择排序
/*选择排序
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)
*/
#include<windows.h>
#include<stdio.h>
void main(){
int min,i,j,arr[]={,,,,,,,,,},t;
int size = sizeof(arr)/sizeof(int);//计算数组的大小
for(i = ; i< size-;i++){//n个数进行n-1轮比较
min = i;//每一轮假定i为下标的这个数为最小值,记录下标
for(j = i+;j < size;j++)//每一轮比较时,后面的数与min为下标的数比较
if(arr[j]<arr[min]) min = j;//后面的数比min为下标的数小,更换min
if(min != i){//如果min的值发生了变化即当前下标为i的数不是最小值,交换
t = arr[i];
arr[i]=arr[min];
arr[min] = t;
}
} for(i = ;i< size;i++){//输出
printf("%d ",arr[i]);
} system("pause"); } - 冒泡排序
/*冒泡排序
重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成
*/
#include<windows.h>
#include<stdio.h>
void main(){
int min,i,j,arr[]={,,,,,,,,,},t,noswap;
int size = sizeof(arr)/sizeof(int);//计算数组的大小
for(i = ; i< size-;i++){//n个数进行n-1轮比较
noswap = ;//标记是否发生交换,以避免对已经有序的序列再排序
for(j = ;j<size--i;j++){
if(arr[j]>arr[j+]){//如果前一个数比后一个数大,交换
t=arr[j];
arr[j]=arr[j+];
arr[j+]=t;
noswap = ;//发生了交换
}
} if(noswap) break; //没有发生交换,说明已经有序,无需再排序,退出循环
} for(i = ;i< size;i++){//输出
printf("%d ",arr[i]);
} system("pause"); }
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序的更多相关文章
- 排序算法Java代码实现(一)—— 选择排序
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- [java初探06]__排序算法的简单认识
今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. ...
- Java常用排序算法+程序员必须掌握的8大排序算法
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...
- C语言排序算法学习笔记——交换类排序
交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们 ...
- Java学习笔记——排序算法之简单排序
男儿何不带吴钩,收取关山五十州.请君暂上凌烟阁,若个书生万户侯? --南园十三首 三种排序法: 1.冒泡法 2.简单选择法 3.直接插入法 上代码: 1.冒泡排序 public class Bub ...
- [转]Java 常用排序算法/程序员必须掌握的 8大排序算法
本文转自:http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插 ...
随机推荐
- git、git bash、git shell的区别
之前安装了github(CSDN上找的,官网的下不来,貌似要FQ - -)后,自带了git shell,如图: 输命令的时候发现网上的一些命令不管用,譬如:git ls –a 查看隐藏的 .git 文 ...
- 使用MAP文件快速定位程序崩溃代码行 (转)
使用MAP文件快速定位程序崩溃代码行 =========================================================== 作者: lzmfeng(http://lz ...
- 160708、JQuery解析XML数据的demo
用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做.下面我们来总结几个使用JQuery解析XML的例子. 方案1 当后台返回的数据类型是xml对象 ...
- Universally Unique Identifier amazonservices API order 亚马逊订单接口的分析 NextToken
one hour in linux mysql> ) from listorders; +----------+ | count() | +----------+ | | +---------- ...
- 无NavigationBar到有NavigationBar视图切换时的一个坑
NavigationController在iOS App中是最常见不过了,可以说是每个App中必备的了.自iOS7开始,系统自带的右滑返回效果,也可以让有NavigationBar的视图切换很丝滑流畅 ...
- ArcGIS runtime for wpf 部署
简介 ArcGIS runtime for wpf 是一个轻量级的产品,部署方便,甚至可以做到直接部署在U盘中,做到即插即用. 部署一般需要遵循如下几个步骤: 1. 设定部署许可 虽然ArcGIS r ...
- asp.net Mvc Npoi 导出导入 excel
因近期项目遇到所以记录一下: 首先导出Excel : 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// < ...
- 【转】Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- java 怎么让打印信息换行?
System.out.println("账号=="+name+"\n"); System.out.println("密码=="+pwd+&q ...
- 设计模式(五) 注解方式实现AOP
1.1. Aop, aspect object programming 面向切面编程 功能: 让关注点代码与业务代码分离! 关注点, 重复代码就叫做关注点: 切面, 关注点形成的类,就叫切面(类) ...