zoukankan      html  css  js  c++  java
  • 排序算法

    一 冒泡排序
    通过左边与右边比较进行交换而实现排序

    #include <stdio.h>
    int main()
    {
    	int a[100],i,j,t,n;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	scanf("%d",&a[i]);
    	for(i=0;i<n-1;i++)
    	{
    		for(j=0;j<n-1;j++)
    		{
    			if(a[j]<a[j+1])
    			{
    			t=a[j];
    			a[j]=a[j+1];
    			a[j+1]=t;
    			}
    		}
    	}
    	for(i=0;i<n;i++)
    	{
    	printf("%d ",a[i]);
    	}
    	return 0;
    }
    

    二 快速排序

    #include <stdio.h>
    #include <stdlib.h>
    int a[101],n;//定义全局变量,这两个变量需要在子函数中使用;
    void quicksort(int left ,int right)
    {
        int i,j,t,temp;
        if(left>right)
        {
            return;
        }
        temp=a[left];
        i=left;
        j=right;
        while(i!=j)
        {
            //顺序很重要,要先从右往左找,找到小于基准数的数
            while(a[j]>=temp&&i<j)
                j--;
            //在从左往右找,找到大于基准数的数
            while(a[i]<=temp&&i<j)
                i++;
                if(i<j)
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
        }
        //最终将基准数归位
        a[left]=a[i];
        a[i]=temp;
        quicksort(left,i-1);
        quicksort(i+1,right);
        return;
    }
    int main()
    {
        int i,j;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        quicksort(1,n);
        for(i=1;i<=n;i++)
        {
            printf("%d ",a[i]);
        }
        return 0;
    }
    

    下面介绍函数库里的排序

    一、C中的qsort
    代码如下

    int compInc(const void *a, const void *b)
    {
    return *(int *)a - *(int *)b;
    }
    qsort(a, len, sizeof(a[0]), compInc);
    
    

    注意 :头文件#include <stdlib.h>
    此时a[0]=最小。
    当return *(int *)b - *(int *)a;
    a[0]=最大。
    二、C++中的sort

    sort(a,a+n);
    

    头文件为

    #include<algorithm>
    

    a为数组名。n为长度。
    这样默认是从小到大。
    如果想要从大到小
    添加

    int cmp(int a,int b)
    {
    	return a>b;
    }
    

    但排序许多时候要排序结构体,保持一项排序,其他的元素跟随不变。
    下次在写。

  • 相关阅读:
    pymongo 常用方法
    字典判断是否具备 key
    flask中的request和常用属性方法
    zipfile 解压,py3 win下中文乱码
    远程登录mongo
    eval
    二分查找
    快速排序
    Python3解leetcode Single Number
    Python3解leetcode Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319603.html
Copyright © 2011-2022 走看看