常用排序算法

简介: 常用排序算法

桶排序

#include <stdio.h>
//桶排序 
int main() {
  int book[1001],i,j,t,n;
  for(i=0; i<=1000; i++)
    book[i]=0;
  scanf("%d",&n);//输入一个数n,表示接下来有n个数
  for(i=1; i<=n; i++) { //循环读入n个数,并进行桶排序
    scanf("%d",&t); //把每一个数读到变量t中
    book[t]++; //进行计数,对编号为t的桶放一个小旗子
  }
  for(i=1000; i>=0; i--) //依次判断编号1000~0的桶
    for(j=1; j<=book[i]; j++) //出现了几次就将桶的编号打印几次
      printf("%d ",i);
  getchar();
  getchar();
  return 0;
}

时间复杂度:O(N+M) M:桶的个数 N:数的个数.

冒泡排序

#include <stdio.h>
//冒泡排序 
int main() {
  int a[100],i,j,t,n;
  scanf("%d",&n); //输入一个数n,表示接下来有n个数
  for(i=1; i<=n; i++) //循环读入n个数到数组a中
    scanf("%d",&a[i]);
//冒泡排序的核心部分
  for(i=0; i<n-1; i++) { //n个数排序,只用进行n-1趟
    for(j=0; j<n-i-1; j++) //从第1位开始比较直到最后一个尚未归位的数,想一想为什么到n-i就可以了
     {
      if(a[j]<a[j+1]) { //比较大小并交换
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t;
      }
    }
  }
  for(i=1; i<=n; i++) //输出结果
    printf("%d ",a[i]);
  return 0;
}

时间复杂度:O(N^2)

快速排序

#include<iostream>
using namespace std;
int arr[101],n;
void quicksort(int left,int right)
{
  int i,j,t,temp;
  if(left > right)
    return;
  temp=arr[left];
  i = left;
  j = right;
  while(i!=j)
  {
    //先从右往左找 
    while(arr[j]>=temp&&i<j)
    {
      j--;
    }
    //再从左往右找
    while(arr[i]<=temp && i < j) 
    {
      i++;
    }
    //交换两个数在数组中的位置
    if(i<j) //当哨兵i和j没有相遇时
    {
      t = arr[i];
      arr[i]=arr[j];
      arr[j] = t;
     } 
  }
  //将基数归位
  arr[left] = arr[i];
  arr[i] = temp;
  quicksort(left,i-1);//继续处理左边的 
  quicksort(i+1,right); //继续处理右边的 
}
int main()
{
  cin>>n;
  for(int i = 1; i<=n; i++)
  {
    cin>>arr[i];
  }
  quicksort(1,n);
  for(int i = 1; i<=n; i++)
  {
    cout<<arr[i]<<" ";
  }
  return 0;
 } 

时间复杂度:O (NlogN)

相关文章
|
4月前
|
搜索推荐 算法
排序算法总结
排序算法总结
34 11
|
5月前
|
搜索推荐 算法 Python
排序算法1
排序算法1
|
6月前
|
搜索推荐 算法
常见的排序算法(1)
常见的排序算法(1)
78 3
|
6月前
|
搜索推荐 算法 数据处理
C++中的排序算法
C++中的排序算法
46 0
|
6月前
|
搜索推荐 C#
C#实现选择排序算法
C#实现选择排序算法
43 2
|
6月前
|
搜索推荐 算法
常见排序算法实现(二)
常见排序算法实现(二)
51 0
|
搜索推荐 C++
89 C++ - 常用排序算法
89 C++ - 常用排序算法
38 0
|
搜索推荐 算法
14 排序算法
14 排序算法
30 0
|
搜索推荐 Java C++
简单介绍排序算法
简单介绍排序算法
37 0
|
算法 搜索推荐 Java
常见排序算法详解(1)
前言 排序是我们在日常生活和工作中常见的一种操作。在计算机科学中,排序算法就是将一串或一组数据按照特定的顺序进行排列的算法。这些顺序可能是数字的升序或降序,也可能是字母或字词的字母顺序等。我们将探讨几种不同的排序算法,包括他们的原理、优缺点以及代码实现。
129 0