c语言常见的几种排序方法总结
一:选择排序和冒泡排序
这两种排序比较简单,直接贴出代码:
#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语言常见的几种排序方法总结的更多相关文章
- 十七、Java中数组常见的几种排序方法!
转载自:https://www.cnblogs.com/bekeyuan123/p/6891875.html 数组的定义: // 3种定义方式 int[] arr = new int[5]; int[ ...
- java数组中的三种排序方法中的冒泡排序方法
我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...
- php常见的几种排序以及二分法查找
<?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 ...
- AJPFX关于Java中运用数组的四种排序方法
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...
- ch1_6_1求解两种排序方法问题
考拉有n个字符串字符串,任意两个字符串长度都是不同的. 考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "carr ...
- python 两种排序方法 sort() sorted()
python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...
- 三种排序方法(c语言)
#include "stdio.h" void main() {void read_data(int a[],int n); void write_data(int a[],int ...
- c#实现几种排序方法
插入排序 1.简介 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序 ...
- JAVA中运用数组的四种排序方法
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进 ...
随机推荐
- 64位ubuntu14.04配置adb后提示没有那个文件或目录
1.配置完adb环境变量后在终端输入adb: ameyume@ameyume-HP-450-Notebook-PC:~$ adb /home/ameyume/adt-bundle-linux-x86_ ...
- 网站开发进阶(二十)JS中window.alert()与alert()的区别
JS中window.alert()与alert()的区别 前言 alert与window.alert没什么区别,如果有人觉得有区别,那就来解释一下:所有以window.开始的语句,都可以直接把wind ...
- SpannableString 给TextView添加不同的显示样式
TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色.字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 myT ...
- /dev、/sys/dev 和/sys/devices 和udev的关系
/dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备: /sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备:是文件系统管理设备的最 ...
- 网站开发进阶(八)tomcat异常日志分析及处理
tomcat异常日志分析及处理 日志信息如下: 2015-10-29 18:39:49 org.apache.coyote.http11.Http11Protocol pause 信息: Pausin ...
- Oracle EBS ERP中月结年结的流程总结
月结与年结处理,是企业财务比较特殊而重要的业务操作.在实施与推广OracleERP系统过程中,如何结合现行的会计制度与惯例,充分利用软件功能,做好相应的关账.开账工作,是困扰许多企业财务人员乃至实施顾 ...
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
- 实现去哪儿来回机票选择的view
最近有个控件是实现和去哪儿和阿里旅行的app的选择日历效果,反编译没有效果的情况下我自己实现了个,大致的原理是: 上面是产品需要实现的效果,我看了下不就是一个ListView+gridView就能实现 ...
- shc/unshc加/解密shell脚本
一.加密软件shcshc是linux的一款加密脚本的插件东西比较安全我们可以利用wget将文件放在root目录下也可以通过sftp放在root目录也可以直接利用cd命令选择目录一切随意shc官网:ht ...
- DPDK virtio-user
PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. virtio-user 是 DPDK 针对特定场景提出的一种解决方案, ...