#include <stdio.h>void bubble_sort(int arr[], int n);///稳定
void insert_sort(int arr[],int n);///稳定void selection_sort(int arr[],int n);///不稳定
void quick_sort(int arr[],int start,int end);///不稳定int main()
{int a[105];int n;scanf("%d",&n);int i;for(i=0;i<n;i++){scanf("%d",&a[i]);}//selection_sort(a,n);//bubble_sort(a,n);//quick_sort(a,0,n-1);insert_sort(a,n);for(i=0;i<n;i++){printf("%d ",a[i]);}printf("\n");
}///选择排序,时间复杂度O(n^2),是不稳定的,如4 5 5 2 6
void selection_sort(int arr[],int n)
{int i;for(i=0;i<n-1;i++){int min = i;int j;for(j=i+1;j<n;j++){if(arr[min] > arr[j]){min = j;}}if(min != i){int tmp;tmp = arr[min];arr[min] = arr[i];arr[i] = tmp;}}
}///冒泡排序,时间复杂度O(n^2),是稳定的
void bubble_sort(int arr[], int n)
{int i, j, temp;for (j = 0; j < n - 1; j++)for (i = 0; i < n - 1 - j; i++){if(arr[i] < arr[i + 1]){temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}
}///快速排序,时间复杂度O(n*log(n)),是不稳定的
void swap(int arr[],int i,int j)
{int tmp;tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}void quick_sort(int arr[],int start,int end) ///end代表数组中最后一个元素的位置
{if(start >= end){return ;}int x;int i = start;int j = end;x = arr[start];while(i != j){while(i < j && arr[j] > x){j--;}swap(arr,i,j);while(i < j && arr[i] <= x){i++;}swap(arr,i,j);}quick_sort(arr,start,i-1);quick_sort(arr,i+1,end);
}///插入排序,时间复杂度O(n^2),是稳定的
void insert_sort(int arr[],int n)
{int i=0;int tmp;for(i=1;i<n;i++){int j = i-1;tmp = arr[i];while(arr[j] > tmp && j >= 0){arr[j+1] = arr[j];j--;}arr[++j] = tmp;}
}

  

转载于:https://www.cnblogs.com/ACPIE-liusiqi/p/9670039.html

数据结构之各排序算法相关推荐

  1. [ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序

    手撕排序算法系列之:希尔排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算法:排序算 ...

  2. 值得收藏的时间复杂度速查表:数据结构操作、排序算法、图操作、堆操作

    时间复杂度速查表 这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度. 在参加面试前,我们经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,了节省大家的时间,我收集了 ...

  3. 数据结构-常用的排序算法

    总第123篇 好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈.等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲数据结构里面常用的几种排序 ...

  4. 数据结构的六大排序算法详解

    文章目录 一.简单排序 1.Comparable接口介绍 2.冒泡排序 3.选择排序 4.插入排序 二.高级排序 1.希尔排序 2.归并排序 3.快速排序 4.排序的稳定性 一.简单排序 在我们的程序 ...

  5. 数据结构基础和排序算法

    数据结构和算法 1. 数据结构 1.1 稀疏数组 这个简单 稀疏数组即二维数组中有大量为0或同一个无效值的时候,将其压缩为只有有效数据的稀疏数组,需要使用时将其读写出来转为二维数组. public c ...

  6. 数据结构进阶 八大排序算法详解

    数据结构就是定义出某种结构:像数组结构.链表结构.树形结构等,实现数据结构就是我们主动去管理增删查改的实现函数 排序的概念 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列 ...

  7. Java数据结构第一讲-排序算法

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  8. 数据结构和常用排序算法复杂度

    1.顺序表 插入操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数n/2 删除操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数(n-1)/2 按值 ...

  9. Java数据结构之八大排序算法

    目录 一.排序算法的介绍 1.排序算法 2.算法时间的频度 时间频度 3.时间复杂度 4.常见的时间复杂度 5.平均时间复杂度和最坏时间复杂度 6.空间复杂度 二.冒泡排序 1.基本介绍 2.模拟冒泡 ...

  10. python算法与数据结构:08排序算法

    稳定性定义:相同的值在排序结束之后的相对次序不变. 1. 冒泡排序 每一轮相邻两个值之间比较,大小顺序相反的交换位置,最后的值总是最大. 稳定性:稳定 def BubbleSort(alist):&q ...

最新文章

  1. 美国五大科技巨头的人工智能竞赛
  2. String构造方法和字符集编码转换
  3. C语言中的隐式声明是什么,有什么危害?warning: implicit declaration of function ‘xxx’
  4. SQL 查询总是先执行SELECT语句吗?
  5. 它有什么本事,能成为Apache基金会项目?阿里移动前端开源框架Weex揭秘 移动开发...
  6. hive集群部署以及beeline和hive
  7. C 语言结构体引用,引用 C 语言结构体学习
  8. 12.04 安装svn
  9. XML入门的常见问题
  10. 京东轮播图的原生代码
  11. keras 中文文档学习一
  12. 小型产生式系统——昆虫识别
  13. Asp.Net之分页查询
  14. 飞腾cpu服务器浪潮信息,浪潮发布国产飞腾CPU服务器
  15. 钉钉小程序编译时提示 ‘dd is not defined‘
  16. set头文件使用方法
  17. MATLAB使用audioread时报错误:Error using which Must be a string scalar or character vector.
  18. C++进制转换(十进制转二进制、八进制、随意进制)
  19. 在键盘上同时按3个键有时会有一个键不起作用是什么原因?
  20. 毕业设计(源代码+论文+PPT)

热门文章

  1. Redis学习笔记(3)-XShell连接CentOSMini,并安装Redis
  2. Picasso detected an unsupported OkHttp on the ...
  3. Silverlight 用户代码未处理 TypeLoadException
  4. 纯Java代码 图片压缩
  5. 关于mysql文件的.frm文件的导入
  6. TURBOMAIL反垃圾邮件清洁工,还你一个清爽的邮箱
  7. Jquery Div居中
  8. C#中不失真生成缩略图
  9. Unity+KBEngine实战系列1——棋牌(含完整教程与源码)
  10. Visual Studio新建的源文件的默认编码