/*几种常用的排序算法*/
/*算法名称: 冒泡排序
*复杂度:O(n^2)
*参数说明:
*--start:起始地址
×--end:结束地址*/
template <class T>
void BubbleSort(T *start, T *end){
for (T *i = end - 1; i > start; i--)
for (T *j = start; j < i; j++)
if (*j > *(j + 1)){
T tmp = *j;
*j = *(j + 1);
*(j + 1) = tmp;
}
}
/*算法名称: 选择排序
*复杂度:O(n^2) */
template <class T>
void SelectionSort(T *start, T *end){
for (int *i = start; i < end - 1; i++)
for (int *j = i + 1; j < end; j++)
if (*i > *j){
T tmp = *i;
*i = *j;
*j = tmp;
}
}
/*算法名称: 归并排序
*复杂度:O(n^log2n)
*参数说明:
*--buf:进行归并时的零时数组*/
template <class T>
void MergeSort(T *start, T *end, T buf[]){
if (start < end - 1){
int p = (end - start) / 2;
MergeSort(start, start + p, buf);
MergeSort(start + p, end, buf);
T *l = start, *r = start + p;
for (int i = 0; i < end - start; i++){
if (l < start + p && r < end){
if (*l < *r)
buf[i] = *l++;
else
buf[i] = *r++;
}else{
if (l < start + p) buf[i] = *l++;
else buf[i] = *r++;
}
}
for (int i = 0; i < end - start; i++)
start[i] = buf[i];
}
}
/*算法名称: 快速排序
*复杂度:O(n^2) (最坏情况)*/
template <class T>
void QuickSort(T *start, T *end){
if (start < end - 1){
T x = *start;
T *pi = start, *pj = end;
while (true){
while (x > *++pi);
while (x < *--pj);
if (pi >= pj) break;
T tmp = *pi;
*pi = *pj;
*pj = tmp;
}
*start = *pj;
*pj = x;
QuickSort(start, pj);
QuickSort(pj + 1, end);
}
}
分享到:
相关推荐
一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序
本文将详细解析标题中提及的五种排序算法:位与、选择、冒泡、插入以及qsort,并结合在VC6.0环境下进行编译实践的情况。 1. **位与排序**: 位与操作符(`&`)在某些特定场景下可用于排序,例如在整数数组中,通过...
几种常见的排序算法是编程领域中基础且重要的知识点,它们各自有不同的特点和适用场景。本文将详细介绍这些算法,并分析其效率。 一、冒泡排序 冒泡排序是一种简单的排序算法,通过不断交换相邻的两个元素来逐步...
几种常见排序 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置。 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 Insertion...
几种常见排序算法JAVA实现.pdf
本文将深入探讨六种常见的排序算法:选择排序、插入排序、冒泡排序、希尔排序、快速排序以及归并排序,它们都是编程实践中不可或缺的基础知识。 1. **选择排序(Selection Sort)**: 选择排序的工作原理是每一次...
几种常见排序算法(JAVA实现).pdf
本文将深入探讨由C语言实现的几种常见排序算法,包括它们的基本原理、实现细节和性能特点。 首先,让我们从最经典的排序算法——冒泡排序(Bubble Sort)开始。冒泡排序通过不断地交换相邻的不正确顺序的元素来逐步...
包括冒泡排序,选择排序,插入排序,希尔排序,快速排序等常用排序算法的实现并耗时比较
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 在本文中,我们将设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数,以取得直观感受。内部排序算法是指在内存中...
数据结构中几种常见的排序算法之比较,比较常见的冒泡排序、快速排序等
这里我们将深入探讨几种最常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序以及归并排序。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序算法之一,它通过不断地比较相邻元素并交换位置来实现...
根据提供的文件信息,本文将详细...以上就是四种常见排序算法在Java中的实现方式。通过这些基本排序算法的学习,可以帮助开发者更好地理解数据结构和算法的基础知识,同时也能够为后续学习更复杂的算法打下坚实的基础。
这是几种常见的排序算法,我是用C语言编写的,而且代码都是经过我亲自认证的,保证没有什么问题!希望需要的宅男宅女们可以用到!
这份资料"用php实现几种常见的排序算法共6页.pdf.zip"显然包含了关于如何使用PHP实现几种常见排序算法的教程或笔记。 首先,让我们回顾一下几种常见的排序算法,并讨论它们在PHP中的实现: 1. **冒泡排序**...
本文将详细讲解标题中提到的几种排序算法:插入排序、堆排序,以及快速排序和计数排序,这些都是在实际编程中经常使用的算法。 1. **插入排序**(Insertion Sort) 插入排序是一种简单直观的排序算法,它的工作...
Java几种常见的排序算法
### 几种内部排序算法总结 #### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,...