排序

原创 2015年07月09日 12:17:59
#include "stdafx.h"
#include<iostream>

template<typename T>
void swap_t(T& a, T& b)
{
T t = a;
a = b;
b = t;
}

//-------------insert sort-------------------------
template <typename T>
void insert_sort(T* p, int len)
{
for (int i = 0; i < len; ++i)
{
T tm = p[i];
int k = i;
for (; k > 0; --k)
{
if (tm >= p[k - 1])
{
break;
}
p[k] = p[k - 1];
}
p[k] = tm;
}
}
//---------------------------------------------------


//-------------bubble sort-------------------------
template <typename T>
void bubble_sort(T* p, int len)
{
for (int i = 1; i < len; ++i)
{
for (int k = len-1; k >= i; --k)
{
if (p[k] < p [k-1])
{
swap_t(p[k], p[k - 1]);
}
}
}
}
//---------------------------------------------------


//---------------------------------------------------


//-------------select sort-------------------------
template <typename T>
void select_sort(T* p, int len)
{
for (int i = 0; i < len -1; ++i)
{
int imin = i;
for (int k = i + 1; k < len; ++k)
{
if (p[imin] > p[k])
{
imin = k;
}
}


if (imin != i)
{
swap_t(p[imin], p[i]);
}
}
}
//---------------------------------------------------

//------------------------quicksort------------------
template<typename T>
void quicksort(T* a, int lo, int hi)
{
//  lo is the lower index, hi is the upper index  
//  of the region of array a that is to be sorted  
int i = lo, j = hi;

// comparison element x  
int x = a[(lo + hi) / 2];

//  partition  
do
{
while (a[i]<x) i++;
while (a[j]>x) j--;
if (i <= j)
{
swap_t(a[i], a[j]);
i++;
j--;
}
} while (i <= j);

//  recursion  
if (lo < j)
quicksort(a, lo, j);
if (i < hi)
quicksort(a, i, hi);
}
//---------------------------------------------------

int _tmain(int argc, _TCHAR* argv[])
{
int aa[] = { 3, 1, 4,2};
insert_sort(aa,4);
//bubble_sort(aa,4);
//select_sort(aa,4);
//std::sort(aa, aa + 4, std::less<int>());
for (auto i : aa)
{
std::cout << i << std::endl;
}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

图文并貌的DAG(有向无环图)拓扑排序:Kahn算法

图文并貌的DAG(有向无环图)拓扑排序:Kahn算法 正在从小白成长的我想写一个小白看得懂的DAG拓扑排序!不要嫌我啰嗦噢! 目录 1.什么是DAG 2.什么是拓扑排序 3.Kahn算法思想 4...

2.选择排序-java实现

——将Comparable对象的数组从小到大排序的类 时间效率:O(n2)package algorithmData; /**使用选择排序法对数组进行排序的类。 * 将Comparable对象的数...

排序算法合集

选择排序

定义 由名称可知,选择排序的操作是通过不断选择待排序列表中的最大(最小)值,由此构成一个有序列表。冒泡排序的每次排序也是选出列表极值,不过其操作是通过不断比较替换相邻元素实现的,选择排序的每次排序是记...

根据对象属性将对象排序

  • 2017-09-29 15:26
  • 161KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)