1、冒泡排序法:如果有N个数,两两相邻进行比较,将最值沉入最后一位置,要进行N-1轮比较,

第一轮要比较N-1次,第2轮只要比较N-1-1次,因为第一次已经把最值沉入最后一位置,故

不需在进行比较一次,也就是说每一轮都减少一次,所以第2个for循环中j < n-i;下列代码是升序排序

 void bubble_sort(int *num, int n)
{
int num_temp;
for (int i=; i<n; i++)
for (int j=; j<n-i;j++)
{
if (num[j] > num[j+])
{
num_temp = num[j];
num[j] = num[j+];
num[j+] = num_temp;
}
}
}

2、选择排序:每一轮循环中(也就是第2个for循环)只找到最小值的位置,但并不对数据进行交换,

待一轮结束后,判断最小标志是否与当初假设的一样,若不一样,说明其他位置上更小(或大),

在对数据进行交换位置,每轮循环只交换一次数据。而冒泡排序中,第2个循环中,只要找到差

异值就会交换,一轮循环中要进行多次交换。因此冒泡排序比选择排序更耗时。下面代码是降序排序

 void select_sort(int *num, int n)
{
int k_min;
int num_temp = ; for (int i=; i<n-; i++)
{
k_min = i; //假设第一个最小
for (int j=i+; j<n; j++)
{
if (num[k_min] < num[j])
{
k_min = j;
}
} if (k_min != i) //数据交换
{
num_temp = num[i];
num[i] = num[k_min];
num[k_min] = num_temp;
}
}
}

整体代码:

 #include <iostream.h>
#define N 10 void bubble_sort(int *num, int n)
{
int num_temp;
for (int i=; i<n; i++)
for (int j=; j<n-i;j++)
{
if (num[j] > num[j+])
{
num_temp = num[j];
num[j] = num[j+];
num[j+] = num_temp;
}
}
} void select_sort(int *num, int n)
{
int k_min;
int num_temp = ; for (int i=; i<n-; i++)
{
k_min = i; //假设第一个最小
for (int j=i+; j<n; j++)
{
if (num[k_min] < num[j])
{
k_min = j;
}
} if (k_min != i) //数据交换
{
num_temp = num[i];
num[i] = num[k_min];
num[k_min] = num_temp;
}
}
} int main()
{
int num[N] = {,,,,,,,,,}; // bubble_sort(num,N);
select_sort(num,N); for (int i=; i<N; i++)
{
cout<<num[i]<<endl;
} return ;
}

 

C语言中的几种常见排序算法的更多相关文章

  1. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  2. 几种常见排序算法的基本介绍,性能分析,和c语言实现

    本文介绍6种常见的排序算法,以及他们的原理,性能分析和c语言实现: 为了能够条理清楚,本文所有的算法和解释全部按照升序排序进行 首先准备一个元素无序的数组arr[],数组的长度为length,一个交换 ...

  3. Java中几种常见排序算法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数 ...

  4. 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...

  5. 几种常见排序算法的java实现

    一.几种常见的排序算法性能比較 排序算法 最好时间 平均时间 最坏时间 辅助内存 稳定性 备注 简单选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定 n小时较好 直接插入排序 O( ...

  6. Java的几种常见排序算法

    一.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面. ...

  7. 几种常见排序算法的C++描述

    基本的排序算法有如下特点: 1.几种容易的算法都是以O(N2)排序的 2.Shell排序编程简单,其也是以O(N2)排序的,在实践中用的很多 3.复杂的排序算法往往都是按照O(NlogN)尽心排序的 ...

  8. php几种常见排序算法

    <?php //从时间上来看,快速排序和归并排序在时间上比较有优势,//但是也比不上sort排序,归并排序比较占用内存! $arr = [4,6,1,2,3,89,56,34,56,23,65] ...

  9. 几种常见排序算法原理&C语言实现

    一.冒泡排序(以下各法均以从小到大排序为例,定义len为数组array的长度) 原理:比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少. C代码实现 写法一: ...

随机推荐

  1. HTTP SOAP Request

    public string SoapRequest(string url, string message, string type, Encoding encoding) { string resul ...

  2. mongoDB2--mongoDB的下载和安装。

    mongdb安装(1)安装准备我们在Linux环境下来安装mongodb,如果没有Linux操作系统的童鞋,可以使用Vmware虚拟机安装一个Linux虚拟环境来学习.这里就不再赘述.我们到mongo ...

  3. windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  4. mysql 准则 杂谈

    转自 刘智慧的文章 1.尽量不要在数据库做运算,复杂运算移到程序段cpu,竟可能简单运用mysql 2.控制单表数据量, 库表控制300---400,单表字段控制20---50个,单表1G或500W行 ...

  5. NEU OJ 1649 GMZ’s Pretty Number

    先来一次线性素数筛,把1到10000000的素数都筛选出来,然后暴力跑一遍所有可能的值,打个表,查询的时候o(1)效率出解. #include<cstdio> #include<cs ...

  6. LoadRunner性能测试指标分析

    Memory: ·Available Mbytes 简述:可用物理内存数.如果Available Mbytes的值很小(4 MB或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存. 参考值 ...

  7. 第十节,While循环和for循环

    While循环 While循环,是一个循环加判断的组合,满足判断条件返回 真(True)开始循环代码块,不满足判断条件返回 假()不循环 格式: While 条件: 代码块 注意:在While循环里如 ...

  8. delete、truncate与drop的区别

    转自:SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DD ...

  9. 取出parentid为null的顶级栏目 等号改为 is null 避免null当做字符串,

    mysql中查询字段为null或者不为null 在mysql中,查询某字段为空时,不可用等号 = null, 而是 is null,不为空则是 is not null    select * from ...

  10. A框架 第二部 实例化接收到的get类,调用父类抽象方法,自动执行方法call_user_func_array()

    01父类抽象类 abstract.php <?phpabstract class controller_abstract{ protected $app; function __construc ...