【Sorting Collection】

排序集锦

各种排序算法,总结一下,一直在遗忘......

【冒泡排序】

就是下面这个鬼啦:

c实现代码(升序):

#include<stdio.h>

void BubbleSort(int *array,int num)
{
        int i,j,temp;
        for(j=0;j<num;j++)
    {
        for(i=1;i<num-j;i++)
                {
                        if(array[i-1]>array[i]) //倒序就把这里改成<咯
                        {
                                temp=array[i-1];
                                array[i-1]=array[i];
                                array[i]=temp;
                        }
                }
    }
}
int main()
{
        int num;
        scanf("%d",&num);
        int array[num];
        int i;
        for(i=0;i<num;i++)
        {
                scanf("%d",&array[i]);
        }
        /* Calling this functions sorts the array */
        BubbleSort(array,num);
        for(i=0;i<num;i++)
        {
                printf("%d ",array[i]);
        }
        printf("\n");
        return 0;

}

【插入排序】

按顺序插入

C语言实现:

#include<stdio.h>

void insertionsort(int *array,int num)
{
    int i,j;
    for(i=1;i<num;i++)
    {
        int current=array[i];
        j=i-1;
        while(j>=0 && array[j]>current)
        {
            array[j+1]=array[j];//后移为current空出位置
            j--;
        }
        array[j+1]=current;//将current插入空位
    }
}

int main()
{
    int num;
    scanf("%d",&num);
    int array[num];
    int i;
    for(i=0;i<num;i++)
    {
        scanf("%d",&array[i]);
    }
    insertionsort(array,num);
    for(i=0;i<num;i++)
    {
        printf("%d ",array[i]);
    }
    printf("\n");
    return 0;
} 

【希尔排序】

C语言实现代

#include<stdio.h>
void shellsort(int *array,int num)
{
    int i,j,increment,temp;
    for(increment=num/2;increment>0;increment/=2)
    {
        for(i=increment;i<num;i++)
        {
            temp=array[i];
            for(j=i;i>=increment;j-=increment)
            {
                if(temp<array[j-increment])
                {
                    array[j]=array[j-increment];
                }
                else
                {
                    break;
                }
            }
            array[j]=temp;
        }  //这里其实跟普通插入一样咯,除了间隔大点
    }  //更改步长,直至最后increment=1,即为普通插入排序
}

int main()
{
        int num;
        scanf("%d",&num);
        int array[num];
        int i;
        for(i=0;i<num;i++)
        {
                scanf("%d",&array[i]);
        }
        shellsort(array,num);
        for(i=0;i<num;i++)
        {
                printf("%d ",array[i]);
        }
        printf("\n");
        return 0;
}
时间: 2024-10-21 00:32:57

【Sorting Collection】的相关文章

【Sorting】【Array】数组中的逆序对

数组中的逆序对 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数.其中1 <= n <= 10^5. 第二行包含n个整数,每个数组均为int类型. 输出: 对应每个测试案例,输出一个整数,表示数组中的逆序对的总数. 样例输入: 4 7 5 6 4 样例输出: 5 思路 分治的思想,统计两边内部的逆序对,以及左右两边之间的逆序对 代码 long

【POJ 1094】Sorting It All Out

[POJ 1094]Sorting It All Out 拓扑排序 输出第一次成功排序的位置及顺序(能顺利拓扑并在拓扑中不存在同级) 或者 第一个出现与之前给出条件相悖的位置(拓扑过程中出现间断) 坑点是出现任何一种情况就out 代码如下 #include <iostream> using namespace std; int in[26],inn[26],n; int mp[26][26]; int Topo(int op) { int i,j,k,f = 1; for(i = 0; i &

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

【数据泵】EXPDP导出表结构

[数据泵]EXPDP导出表结构(真实案例) BLOG文档结构图 ? ? ? ? 因工作需要现需要把一个生产库下的元数据(表定义,索引定义,函数定义,包定义,存储过程)导出到测试库上,本来以为很简单的,可是做的过程发现很多的问题,现记录如下,希望有同样需要的朋友不要再走弯路了. ? ? 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① EXPDP和IMPDP如何导出导入元数据,包括表定义,索引定义,函数定义,包定义,存储过程(重点

【go语言】wait,I don&#39;t understand

该文内容来看读<Go并发编程实战>有感,仅供娱乐分享 :) 在%GOROOT%\src\sort包下有一个sort.go文件,里面第12行有这么一个接口定义: type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the eleme

HDU1160_FatMouse&#39;s Speed【LIS变形】

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9624    Accepted Submission(s): 4284 Special Judge Problem Description FatMouse believes that the fatter a mouse is, the faster

【源码】LinkedList源码剖析

//----------------------------------------------------------- 转载请注明出处:http://blog.csdn.net/chdjj by Rowandjj 2014/8/8 //---------------------------------------------------------- 注:以下源码基于jdk1.7.0_11 上一篇我们分析了ArrayList,今天我们再来看下LinkedList. 首先上一幅框架图: Lin

【源码】ArrayList源码剖析

//-------------------------------------------------------------------- 转载请注明出处:http://blog.csdn.net/chdjj by Rowandjj 2014/8/7 //-------------------------------------------------------------------- 从这篇文章开始,我将对java集合框架中的一些比较重要且常用的类进行分析.这篇文章主要介绍的是Array

【Android进阶】Android面试题目整理与讲解

这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCreate(),onStart(),onResume()方法,此时Activity对用户来说,是可见的状态 当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方法,此时的Activity对用户可见,但是不能相 应用户的点击事件 当Activity从可见状态变为被其他