常见的排序问题(一)

  排序是编程中非常重要的一个需求与功能,经常需要用到排序,在现实中又有太多排序的例子,像电话簿联系人,很多体育比赛,包括各种选举都是通过排序来决定名次与结果的。所以排序问题也是c语言中的一个非常经典的问题,接下来,我将用这篇和下一篇博客来分析一下用c语言实现的排序的几种方法以及它们的特点及各自的改进。(接下来都是以从小到大排序为例介绍一下这几种排序方法),通常情况下用数组来处理排序问题。

  先说一下非常经典的一种方法,选择排序法吧,选择排序是c语言中常用的一种排序算法,它的基本思想是,:每步从待排序的记录中选出剩下的元素中最小的元素,把其与当前还没有完成排序的数列中的第一个数进行交换,这样每在第i轮排序完成后,就可以保证前i个元素是这一组元素中的最小的i个数,且从小到大排列。它的代码如下。

#include <stdio.h>
void selectsort(int a[],unsigned int n)
{
  int i=0,j=0,temp=0,min=0;// 接下来嵌套的for循环将完成选择排序的主要工作
  for (i=0;i<n;i++)
   {

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java常见排序算法有以下几种: 1. 冒泡排序(Bubble Sort):比较相邻的元素,如果顺序错误就交换位置,重复这个过程直到整个数组有序。 2. 选择排序(Selection Sort):在未排序序列中找到最小(大)元素,将其放到已排序序列的末尾,重复这个过程直到整个数组有序。 3. 插入排序(Insertion Sort):将未排序的元素插入已排序序列中的合适位置,重复这个过程直到整个数组有序。 4. 快速排序(Quick Sort):选择一个基准元素,将数组分成两部分,左边部分的元素都小于基准元素,右边部分的元素都大于基准元素,对两部分分别进行快速排序,重复这个过程直到整个数组有序。 5. 归并排序(Merge Sort):将数组分成两半,分别对每一半进行归并排序,然后将两个有序的子数组合并成一个有序的数组,重复这个过程直到整个数组有序。 6. 堆排序(Heap Sort):首先将数组构建成一个最大堆(或最小堆),然后将堆顶元素与最后一个元素交换位置并移出堆,再调整堆使其重新满足堆的性质,重复这个过程直到整个数组有序。 7. 希尔排序(Shell Sort):将数组按照一定间隔分组,对每一组进行插入排序,然后缩小间隔再次分组并进行插入排序,重复这个过程直到间隔为1,即最后一次对整个数组进行插入排序。 8. 计数排序(Counting Sort):统计数组中每个元素出现的次数,然后根据统计信息将元素放回原数组中,重复这个过程直到整个数组有序。 9. 桶排序(Bucket Sort):将数组划分为若干个桶,将元素放入对应的桶中,然后对每个桶中的元素进行排序,最后将所有非空桶按照顺序合并起来。 10. 基数排序(Radix Sort):将元素按照位数进行排序,先按个位数字进行排序,然后按十位数字进行排序,依次类推,直到最高位。 以上是Java常见排序算法,每种算法在不同的情况下有不同的适用性和性能表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值