多种排序

简介: 冒泡排序、选择排序、堆排序

堆排序

#include <iostream>
#include <algorithm>
using namespace std;

const int N=1e5+10;


int h[N], cnt;
int n, m;


void down(int u)
{
    int t=u;
    if(u*2<=cnt&&h[t]>h[u*2]) t=u*2;
    if(u*2+1<=cnt&&h[t]>h[u*2+1]) t=u*2+1;
    if(u!=t)
    {
        swap(h[t], h[u]);
        down(t);
    }
}


int main()
{
    scanf("%d %d", &n, &m);
    for(int i=1;i<=n;i++)
        scanf("%d", &h[i]);
    cnt=n;
    for(int i=n/2;i;i--)
        down(i);
    while(m--)
    {
        printf("%d ", h[1]);
        h[1]=h[cnt];
        cnt--;
        down(1);
    }
    return 0;
}

冒泡排序

#include <stdio.h>
 
#define SIZE 10
int main()
{
    int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};//十个数的无序数列
    int i,j,t;
    printf("此程序使用冒泡排序法排列无序数列!\n");
    //冒泡排序
    for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次
    {
        for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
        {
            if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
            {
               t=a[j+1];
               a[j+1]=a[j];
               a[j]=t;
            }
        }
    }
 
    printf("排列好的数列是:\n");
    //输出排列好得吃数列
    for(i=0;i<10;i++)
    {
 
        printf("%d ",a[i]);
    }
    return 0;
}

选择排序

#include <stdio.h>
 
void arr_out(int a[8])//输出函数
{
    int i = 0;
    for(i = 0;i < 8;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}
 
void arr_sort(int *p,int n)
{
    int i,j;
    int min = 0;
    for(i = 0;i < n - 1;i++)//排序次数
    {
        min = i;
        for(j = i + 1;j < n;j++)
        {
            if(p[j] < p[min])
            {
                min = j;//记录交换的元素下标值
            }
        }
        if(i != min)
        {
            int temp = p[i];
            p[i] = p[min];
            p[min] = temp;
        }  
    }
}
 
int main()
{
    int a[8] = {0};
    int i = 0;
    for(i = 0;i < 8;i++)
    {
        scanf("%d",&a[i]);
    }
 
    arr_sort(a,8);//排序函数
    arr_out(a);//输出函数
 
    return 0;
}
相关文章
|
2天前
|
存储 搜索推荐
排序的总结
排序的总结
|
2天前
|
人工智能 搜索推荐 算法
几种排序的实现
几种排序的实现
11 2
|
9月前
|
搜索推荐
排序进行曲-v1.0
排序进行曲-v1.0
|
9月前
排序进行曲-v4.0
排序进行曲-v4.0
|
10月前
|
算法
排序(详解)下
排序(详解)
43 0
|
10月前
|
算法 搜索推荐
排序(详解)上
排序(详解)
48 0
|
11月前
“选择”排序
“选择”排序
“选择”排序
|
算法 搜索推荐
|
搜索推荐 算法 Java