排序

原创 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;
}
}


数据结构C++单链表冒泡法排序

  • 2017年12月06日 14:22
  • 2KB
  • 下载

CUDA并行排序(2)——一维Double型

  • 2017年12月07日 15:45
  • 1.21MB
  • 下载

第14周项目1(1)- 验证算法 冒泡排序

/* * Copyright(c) 2017,烟台大学计算机学院 * All rights reserved. * 文件名称:cpp1. * 作 者:薛瑞琪 * 完成日期:2...

数据结构排序总结及java实现

  • 2017年11月22日 19:43
  • 2.16MB
  • 下载

第15周项目1(4)- 验证快速排序算法

1.以第1个元素作为基准#include #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]...

C语言奇偶排序

  • 2017年11月15日 22:00
  • 465B
  • 下载

第十五周 【项目2 - 大数据集上排序算法性能的体验】

【项目 - 大数据集上排序算法性能的体验】  设计一个函数,产生一个至少5万条记录的数据集合。在同一数据集上,用直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序等算法进行排...

java数组排序

  • 2017年12月01日 20:52
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序
举报原因:
原因补充:

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