关闭

排序

227人阅读 评论(0) 收藏 举报
分类:
#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;
}
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:757次
    • 积分:27
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行