1.冒泡排序法:

假设有n个数需要按从小到大排序,冒泡排序的原理是,在这一排数字中,将第一个数与第二个数比较大小,如果后面的比前面的小,就将他们交换位置.然后再比较第二个和第三个,再交换,直到第n-1个和第n个,此时第n个就是这n个数中最大,然后再重新找第二大的放在第n-1的位置...

在c编程中是通过两个嵌套的循环,内循环控制比较时的下标(从0到放最大的数的下标之前),外循环控制总的次数(放最大的数的下标到1),以及内循环的比较次数,其中要注意的是总的剩余的次数等于该次外循环中内循环的初始比较次数,外循环的初始次数为n-1,因为要排n个数,只需要弄好n-1个数的位置就好了,内循环的初始次数和外循环一样,因为n个数,按顺序拿一个数与后面的数比较大小,最后那个数后面没有和他比较的,所以也是n-1次.和外循环次数相同.

#include <stdio.h>  

void main()
{
int a[10] = { 5,1,6,9,8,3,4,6,10,7 };
int temp = 0;
for (int j = 9; j>0; j--)
{
for(int i=0;i<j;i++)
{
if (a[i]>a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i + 1] = temp;
}
}
}
for (int i = 0; i<10; i++)
printf("%d ", a[i]);
}

2.选择排序法

假设有n个数需要按从小到大排序,选择排序法的原理是:选择排序在我看来只是冒泡循环的优化方法,思路是在这n个数中先找到最大的数,并记录其下标,然后将最大的数与第n个数交换值(如果正好第n个数是最大的就不用交换了),然后再在剩下的n-1个数中,找最大的数,和第n-1个数交换值...以此类推,和冒泡排序不同的是,每一次的内循环中不会不断的交换值来浪费时间,内循环只是判断寻找最大值的下标,执行一次外循环才有可能有复制交换值的动作,所以大大减少了复杂度.注意:选择排序中内循环的变量范围与冒泡排序不同,冒泡排序因为有[i+1],是选相邻的两个比较,也就是从0比到n-1,而选择排序是假定第0个元素是最大的,碰到比他大的就更新maxindex,也就是从1比到n.但总次数是相同的.

选择最大值的思路是,假定第0个元素是最大的,如果碰到比它大的就更新maxindex.注意:每次内循环之前,别忘了将maxindex归零.

#include <stdio.h>
void main()
{
int a[10] = { 5,1,6,9,8,3,4,6,10,7 };
int maxindex = 0, temp;
for (int j = 9; j > 0; j--)
{
maxindex = 0;
for (int i = 1; i <= j; i++)
{
if (a[maxindex] < a[i])
{
maxindex = i;
}
}
if (maxindex!=j)
{
temp = a[maxindex];
a[maxindex] = a[j];
a[j] = temp;
}
}
for (int i = 0; i<10; i++)
printf("%d ", a[i]);
}

3.插入排序法

c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)的更多相关文章

  1. C语音中最简单的排序冒泡排序和选择排序代码实现(非指针)

    #include<stdio.h> int main() { int a[5] = { 2,5,7,3,-1 }; int n = sizeof(a) / sizeof(a[0]);//元 ...

  2. Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

    前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...

  3. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  4. 冒泡排序和选择排序(Go语言实现)

    冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序 ...

  5. php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

    这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...

  6. Java 快速排序法 冒泡排序法 选择排序法 插入排序法

    1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...

  7. python中对列表元素大小排序(冒泡排序法和选择排序法)

    前言:排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的两种排序算法,选择排序法 ...

  8. C语言之冒泡排序、选择排序、折半查询、进制查表

    菜单导航 1.冒泡排序 2.选择排序 3.折半查询 4.进制查表(十进制转二进制.八进制.十六进制) 一.冒泡排序 //1.冒泡排序 /** 一组无序数字,进行从小到大排序 冒泡排序的过程:就是每个循 ...

  9. C语言数组排序——冒泡排序、选择排序、插入排序

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个……直到比较第n-1个和第n个,此时,每一次比较都 ...

  10. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

随机推荐

  1. 1.Mysql的安装与配置

    1.Mysql的安装与配置1.1 Mysql的下载 mysql是开源数据库,开源数据库在中低端应用中占据了很大的市场份额. mysql社区版自由下载而且安全免费,官方不提供任何技术支持,适用于普通用户 ...

  2. Android.FamousBlogs

    1. cyrilmottier http://cyrilmottier.com/ http://cyrilmottier.com/about/ 2. greenrobot http://greenro ...

  3. linux 使用笔记1

    Zox's code life 人生就是不停的战斗! xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到 ...

  4. ubuntu12.04下安装Apache+PHP+MySQL

    一.Apache1.安装apache2: sudo apt-get install apache2 2.重启apache2: sudo /etc/init.d/apache2 restart 3.在浏 ...

  5. SQL截取字符串分隔符中间部门的办法

    需求:实际项目中需要截取第2到第3个逗号中间部分的内容 方案: declare @str nvarchar(50);set @str='11,222,3333,44444';select @str a ...

  6. system v 共享内存

    #include <stdio.h> #include <string.h> #include <errno.h> #include <unistd.h> ...

  7. 【机器学习】从分类问题区别机器学习类型 与 初步介绍无监督学习算法 PAC

    如果要对硬币进行分类,我们对硬币根据不同的尺寸重量来告诉机器它是多少面值的硬币 这种对应的机器学习即使监督学习,那么如果我们不告诉机器这是多少面额的硬币,只有尺寸和重量,这时候让机器进行分类,希望机器 ...

  8. 神奇的幻方(NOIP2015)

    先给题目链接:神奇的幻方 太水了这题,直接模拟就行,直接贴代码. #include<bits/stdc++.h> using namespace std; int main(){ int ...

  9. 爬虫之mongodb数据库

    一 mongodb的介绍 1.易用性:mongodb是一款强大.灵活并且易扩展的数据库.他面向于文档的数据库,而不是关系性数据库.不采用关系型主要是为了获得更好的扩展性.还有一个好处就是面向文档的数据 ...

  10. 812. Largest Triangle Area

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...