美文网首页
排序常用算法

排序常用算法

作者: JerrySi | 来源:发表于2019-08-19 14:01 被阅读0次

冒泡

void maopao(int *a, int len)
{
    for(int i = 0; i < len - 1; i++)
    {
        for(int j = 0; j < len - i - 1; j++)
        {
            if(a[j] > a[j + 1])
            {
                int temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

选择

void xuanzhe(int *a, int len)
{
    for(int i = 0; i < len; i++)
    {
        
        int k = i;
        for(int j = i + 1; j < len; j++)
        {
            if(a[k] > a[j])
            {
                k = j;
            }
        }
        
        if(k != i)
        {
            int temp = a[k];
            a[k] = a[i];
            a[i] = temp;
        }
    }
}

插入

void charu(int *a, int len)
{
    for(int i = 1; i < len; i++)
    {
        int k = i - 1;
        int temp = a[i];

        while (k >= 0 && a[k] > temp)
        {
            a[k + 1] = a[k];
            k--;
        }
        
        a[k + 1] = temp;
    }
}

希尔

void xier(int *a, int len)
{
    for(int i = len / 2; i >= 1; i /= 2)
    {
        for(int j = i; j < len; j++)
        {
            int k = j - i;
            int temp = a[j];
            
            while (k >= 0 && a[k] > temp)
            {
                a[k + i] = a[k];
                k-=i;
            }
            
            a[k + i] = temp;
        }
    }
}

快速

int findPos(int *a, int left, int right)
{
    if(left < right)
    {
        int temp = a[left];
        
        while (left < right)
        {
            while (left < right && a[right] >= temp) {
                right--;
            }
            a[left] = a[right];
            
            while (left < right && a[left] <= temp) {
                left++;
            }
            a[right] = a[left];
        }
        
        a[left] = temp;
    }
    
    return left;
}
void kuaisu(int *a, int left, int right)
{
    if(left < right)
    {
        int pos = findPos(a,left,right);
        kuaisu(a, left, pos - 1);
        kuaisu(a, pos + 1, right);
    }
}
//-----------------main-----------------
int main(int argc, const char * argv[]) {
    int a[] = {9,8,4,8,2,1,0,7,5,9,6,3};
    int i = sizeof(a) / sizeof(int);
    kuaisu(a, 0, i - 1);
    return 0;
}

相关文章

  • 算法04-棋牌游戏常用排序算法

    算法04-棋牌游戏常用排序算法 一、介绍 棋牌游戏常用排序算法包括:链式基数排序、插入排序、希尔排序。 二、链式基...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 常用的排序算法

    常用的排序算法 常用的排序算法插入排序折半插入排序shell 排序冒泡排序选择排序快速排序基数排序归并排序堆排序K...

  • 常用算法

    常用排序算法

  • 常见排序算法

    常用排序算法

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、...

  • 常用排序算法

    常用的排序算法 在此总结一下常用排序算法的代码实现 #include using namespace std;t...

网友评论

      本文标题:排序常用算法

      本文链接:https://www.haomeiwen.com/subject/yemssctx.html