一:选择排序和冒泡排序

  这两种排序比较简单,直接贴出代码:

  

 #include <stdio.h>

 void choose_sort(int *arr, int n);
void bubble_sort(int *arr, int n);
void show(int *arr, int n); int main()
{
int arr[] = {, , , , , , , , , }; /*选择排序*/
choose_sort(arr, );
show(arr, ); /*冒泡排序*/
bubble_sort(arr, );
show(arr, ); return ;
} void choose_sort(int *arr, int n)
{
int i = ;
int j = ;
int index = ;
int swap = ; for(i = ; i < n; i++) {
index = i;
for(j = i; j <n; j++ ) {
if(arr[index] > arr[j]) {
index = j;
}
}
swap = arr[i];
arr[i] = arr[index];
arr[index] = swap;
}
} void bubble_sort(int *arr, int n)
{
int i = ;
int j = ;
int swap = ; for(i = ; i < n - ; i++) {
for(j = ; j < n - i - ; j++) {
if(arr[j] > arr[j + ]) {
swap = arr[j];
arr[j] = arr[j + ];
arr[j + ] = swap;
}
}
}
} void show(int *arr, int n)
{
int i = ;
for(i = ; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

  二:插入排序

  下面代码是在一个有序数组中的插入一个数,插入后仍然有序:

 #include <stdio.h>

 void insert_sort(int *arr, int num, int n);

 int main()
{
int arr[] = {, , , , , , , , };
insert_sort(arr, , ); int i = ;
for(i = ; i < ; i++) {
printf("%d ", arr[i]);
}
printf("\n"); return ;
} void insert_sort(int *arr, int num, int n)
{
int i = ;
int index = ; for(i = ; i < n; i++) {
if(arr[i] > num) {
index = i;
break;
}
} if(i == n) {
arr[i] = num;
}
else {
for(i = n; i >= index; i--) {
arr[i + ] = arr[i];
}
arr[index] = num;
}
}

  三:快速排序

 #include <stdio.h>

 void quick_sort(int *arr, int low, int high);
void show(int *arr, int n); int main()
{
int arr[] = {, , , , , , , }; quick_sort(arr, , );
show(arr, ); return ;
} void quick_sort(int *arr, int low, int high)
{
int pivot = ;
int i = ;
int j = ;
if(high <= low)
return; pivot = arr[low];
i = low;
j = high; while(i < j) {
while(i < j && arr[j] > pivot)
j--;
if(i < j)
arr[i++] = arr[j];
while(i < j && arr[i] < pivot)
i++;
if(i < j)
arr[j--] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, low, i - );
quick_sort(arr, i + , high);
} void show(int *arr, int n)
{
int i = ;
for(i = ; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

快速排序涉及到递归调用,比较难理解,最好在纸上画出执行过程,慢慢理解

  

c语言常见的几种排序方法总结的更多相关文章

  1. 十七、Java中数组常见的几种排序方法!

    转载自:https://www.cnblogs.com/bekeyuan123/p/6891875.html 数组的定义: // 3种定义方式 int[] arr = new int[5]; int[ ...

  2. java数组中的三种排序方法中的冒泡排序方法

    我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...

  3. php常见的几种排序以及二分法查找

    <?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 ...

  4. AJPFX关于Java中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...

  5. ch1_6_1求解两种排序方法问题

    考拉有n个字符串字符串,任意两个字符串长度都是不同的.  考拉最近学习到有两种字符串的排序方法:   1.根据字符串的字典序排序.例如: "car" < "carr ...

  6. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  7. 三种排序方法(c语言)

    #include "stdio.h" void main() {void read_data(int a[],int n); void write_data(int a[],int ...

  8. c#实现几种排序方法

    插入排序 1.简介 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序 ...

  9. JAVA中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进 ...

随机推荐

  1. STL常用遍历算法for_each和transform的比较

    for_each()和transform()算法比较 1)STL 算法 – 修改性算法  for_each()  copy()  copy_backward()  transform()  merge ...

  2. centos6.2安装桌面环境 与中文支持

    yum groupinstall "X Window System" //安装Xorgyum groupinstall "Desktop" //安装GNOMEy ...

  3. Linux下MySQL备份以及crontab定时备份

    1. 备份某个数据库 ################################################################## # 备份某个数据库 ############ ...

  4. cocos2D v3.x 中action的回调block变化

    cocos2D v2.x中有带参数的回调block: id blk = [CCCallBlockN actionWithBlock:^(CCNode *node){ node.position = o ...

  5. javascript访问html元素的内容(2)

    对于(1)中最后一个包装方式创建的是一个方法,我们必须以方法调用的方式来使用它,这和其他默认的以属性返回结果略有不同,如果有强迫症的童鞋有些伤不起,那么我们下面就把它实现为属性返回的方式: //chi ...

  6. DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号

    1     引言    中国本土程序员马根峰推出的个人作品----万能数据库查询分析器,中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>. 万能数据 ...

  7. C# 添加、读取Word脚注尾注

    脚注和尾注是对文本的补充说明.脚注一般位于页面的底部,可以作为文档某处内容的注释:尾注一般位于文档的末尾,列出引文 的出处等.在本示例中将介绍如何来添加或删除Word脚注. 工具使用:Free Spi ...

  8. 数据准备<2>:数据质量检查-实战篇

    上一篇文章:<数据质量检查-理论篇>主要介绍了数据质量检查的基本思路与方法,本文作为补充,从Python实战角度,提供具体的实现方法. 承接上文,仍然从重复值检查.缺失值检查.数据倾斜问题 ...

  9. 春天JDBC事务管理

    JDBC事务管理 春天提供编程式的事务管理(编程式事务管理)与声明式的事务管理(声明式事务management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管 ...

  10. spring mvc和spring的区别

    springmvc只是spring其中的一部分. spring 可以 支持 hibernate ,ibatis ,JMS,JDBC 支持事务管理, 注解功能,表达式语言,测试 springmvc 就是 ...