排序方法总结大全

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41181771/article/details/85054514

1.冒泡排序:

冒泡排序的基本思想是,一趟冒泡可以交换出序列中的一个最值,并且放在它的正确位置;

所以一共有 个元素,一共需要找出 n - 1 个最值,也就是要循环 n - 1 次。

即外层循环为 1 ~ n

而内层循环,是要从 0 循环到第 n - i 个,然后分别和后一个元素来比较,进行交换操作(C++里面可以直接用 swap( a , b ) 来交换,但是 C 语言不行哦)

具体代码函数如下哦:

int a[100];
void bubblesort(int a[], int n) //从0 ~ n 的元素从小到大排序
{
    for(int i = 1; i < n; i++)
    {
        for(int j = 0; j < n - i; j++)
        {
            if(a[j] > a[j+1])
                swap(a[j], a[j+1]);
        }
    }
}

2.选择排序:

选择排序的基本思想是,每一趟循环,找到一个最值,然后跟它需要放在的位置上面的元素来交换位置。

因为一共 n 个元素,也是一共需要循环 n - 1 次。

int a[100];
void selectsort(int a[],int n) //从0 ~ n 的元素从小到大排序
{
    for(int i = 1; i < n; i++)
    {
        int k = 0;
        for(int j = 0; j <= n - i; j++)
        {
            if(a[j] > a[k])
                k = j;
        }
        swap(a[k],a[n-i]);
    }
}

3.sort排序:

我之前博客里面有,所以就不细致讲了。超链接:sort 排序

直接在 main 函数里面调用即可,简要代码:

#include <algorithm>
int a[100];
int main()
{
    sort(a,a+n);
}

4.快速排序:

快速排序思想是,从一个序列中寻找到一个tmp值(一般为第一个)作为基准值,然后将整个序列中比它小的,放在它前面,比它大的,放在后面,然后通过递归,一次次二分下去,一直到排序完成。

struct type
{
    int key;
}R[1000];

int partition(type R[], int s, int t)
{
    int i = s, j = t;
    type tmp = R[i];
    while(i < j)
    {
        while(j > i && R[j].key >= tmp.key)
            j--;
        R[i] = R[j];
        while(i < j && R[i].key <= tmp.key)
            i++;
        R[j] = R[i];
    }
    R[i] = tmp;
    return i;
}

void Quicksort(type R[], int s, int t)
{
    int i;
    if(s < t)
    {
        i = partition(R,s,t);
        Quicksort(R, s, i-1);
        Quicksort(R, i+1, t);

    }
}

int main()
{
    Quicksort(R, 0, n);//从 0 ~ n 从小到大排序
}

一般 sort 排序用的比较多,也比较方便,所以别的仅供参考哦!

OVER!

猜你喜欢

转载自blog.csdn.net/qq_41181771/article/details/85054514