设为首页 - 加入收藏
广告 1000x90
您的当前位置:黄大仙www78345 > 交换排序 > 正文

怎样用C语言对一串整行数从大到小排序

来源:未知 编辑:admin 时间:2019-07-03

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  2013-10-28展开全部方法太多了,当然各种时间排序的时间复杂度和空间复杂度不同、稳定性也不同。最简单的我觉得就是冒泡排序了,也最形像。/*

  算法思想简单描述: 在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

  到倒数第二个数和最后一个数比较为止。 选择排序是不稳定的。算法复杂度O(n2)--[n的平方]

  算法思想简单描述: 在要排序的一组数中,假设前面(n-1) [n=2] 个数已经是排

  *(x+j+1) = *(x+j); /*如果满足条件就往后挪。最坏的情况就是t比下标为0的数都小,它要放在最前面,j==-1,退出循环*/

  算法思想简单描述: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上

  位置k,这样可以减少外层循环扫描的次数。 冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]

  k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/

  多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现

  算法思想简单描述: 快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟

  函数是用递归实现的,有兴趣的朋友可以改成非递归的。 快速排序是不稳定的。最理想情况算法时间复杂度O(nlog2n),最坏O(n2)

  int i, j, t; if (low high) /*要排序的元素起止下标,保证小的放在左边,大的放在右边。这里以下标为low的元素为基准点*/

  *(x+i) = *(x+j); /*上面的循环退出:即出现比基准点小的数,替换基准点的数*/

  *(x+j) = *(x+i); /*上面的循环退出:即出现比基准点大的数,放到右边*/

  算法思想简单描述: 堆排序是一种树形选择排序,是对直接选择排序的有效改进。

  时称之为堆。在这里只讨论满足前者条件的堆。 由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项。完全二叉树可以

  初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储顺序,

  交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点

  的堆,并对它们作交换,最后得到有n个节点的有序序列。 从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素

  交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数

  实现排序的函数。 堆排序是不稳定的。算法时间复杂度O(nlog2n)。*/

  输入:数组名称(也就是数组首地址)、参与建堆元素的个数、从第几个元素开始

本文链接:http://apkhealth.com/jiaohuanpaixu/416.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top