各种不同的排序方法实现

排序的分类

排序分为内部排序和外部排序,这里我们主要介绍内部排序,而内部排序又分为以下几类:

1. 插入类排序

(1).直接插入排序:就是将待排序的元素插入到已排序的序列中

(2).希尔排序:非常类似于直接插入排序,只不过设了一个增量,然后按照这个增量来进行直接插入排序

2. 交换类排序

特点:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动

(1).冒泡排序:通过比较相邻两个元素的大小来交换位置

(2).快速排序:需要用到递归,对一个待排序的序列,取出其序列中第一个位置的值,然后将整个序列分为左右两部分(大于它的和小于它的),然后再对左半部分做同样的操作,同理右半部分也是

3. 选择类排序

(1).简单选择排序:每次选出一个最大值(或最小值)放到序列的前面

(2).堆排序:将一个无序序列转为一个大顶堆,然后将堆顶放到序列的后面

4.归并排序

先分割,再归并,也是一个递归的过程

所有排序算法的实现及详解

#include<stdio.h>

//不同种类的排序
void DirectInsertSort(int [],int );
void ShellSort(int [],int );
void BubbleSort(int [],int );
void QuickSort(int [],int ,int );
void SelectSort(int [],int );
void HeapInit(int [],int ,int );
void swap(int *,int *);
void HeapSort(int [],int );
void MergeSort(int [],int [],int ,int );
void Merge(int [],int [],int ,int ,int );

int main(){
   
    int arr[]={
   25,12,8,40,32,7,14,10,36,21,30,5,66,44};
    int length=sizeof(arr)/sizeof(arr[0]);
    int temp[length];
    int i;
//    DirectInsertSort(arr,length);
//    ShellSort(arr,length);
//   BubbleSort(arr,length);
//    QuickSort(arr,0,13);
//    SelectSort(arr,length);
//    HeapSort(arr,length);
    MergeSort(arr,temp,0,13);
    for(i=0;i<length;i++){
   
        printf("%d  ",arr[i]);
    }   
    return 0;
}

/*****************************************************************************
 ***********************************分界线************************************
 *****************************************************************************/

/*
    直接插入排序:1.从第二个元素开始,即i指向第二个元素,然后开始比较i与i-1的大小关系,如果arr[i]>arr[i-
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值