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()实现. 冒泡法是运用遍历数组进 ...
随机推荐
- FFMPEG结构体分析:AVPacket
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...
- Android Studio中创建Kotlin For Android项目
Kotlin俗称Android中的Swift,它是Jetbrains公司开发的基于JVM的一门语言,JetBrains公司可能大家并不熟悉,不过相信IntelliJ IDE大家一定知道,Android ...
- java工具类(四)之实现日期任意跳转
Java实现日期任意跳转 项目开发过程中,需要进行订单提醒日期的设置,主要包括设置每月指定的日期或者指定的天数,代码如下: public static String DateOperation(Str ...
- Java-ServletContextAttributeListener
/** Implementations of this interface receive notifications of ** changes to the attribute list on t ...
- 【59】Quartz+Spring框架详解
什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中"job sc ...
- Leetcode_206_Reverse Linked List
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45739753 Reverse a singly linke ...
- android最火的开源项目
原文地址:http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale 此前,CSDN移动频道推 ...
- SharePoint 调用WebService操作List小记
简述:在SharePoint的使用中,经常需要进行系统集成这样的操作,我们作为SharePoint开发,就需要给其他系统提供接口,而SharePoint提供的WebService就很好的提供了这样的功 ...
- 修改win7系统sid
百度百科定义: Windows使用SID来表示所有的安全对象(security principals).安全对象包括主机,域计算机账户,用户和安全组.名字Name是用来代表SID的一个方法,可以允许用 ...
- C#基础随手笔记之基础操作优化
对数据的查询,删除等基本操作是任何编程语言都会涉及到的基础,因此,研究了一下C#中比较常用的数据操作类型,并顺手做个笔记. List查询时,若是处理比较大的数据则使用HashSet<T>类 ...