排序

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


排序学习简介

译排序学习简介,翻译自李航老师的《A Short Introduction to Learning to Rank》
  • clheang
  • clheang
  • 2016年06月15日 20:42
  • 5008

二分排序(java)

基本思想就是:将待排序元素分成大小大致相同 的两个子集合,分别 对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。package com.suanfa; /** * 二分排序 ...
  • baidu_23086307
  • baidu_23086307
  • 2016年05月30日 14:42
  • 1070

pandas学习:对series和dataframe进行排序

本问主要写根据索引或者值对series和dataframe进行排序的方法 代码: #coding=utf-8 import pandas as pd import numpy as np #以下实...
  • u014662865
  • u014662865
  • 2017年03月01日 10:53
  • 3498

jqGrid 排序功能

主要添加 sortable:true,sortorder :"asc"   某些字段不要拍戏功能的话 只要在字段中加入 sortable:false; jqgrid排序的功能是:在点击每一列的列名时,...
  • u013792648
  • u013792648
  • 2016年10月18日 10:32
  • 12886

bootstrap点击表头实现排序功能

bootstrap点击表头实现排序功能
  • Hero_QHZ
  • Hero_QHZ
  • 2017年07月27日 14:00
  • 2503

jquery中按照商品价格给li标签排序的方法

/**实现:点击价格进行排序,布尔变量作为开关,true升序,false降序 ------未实现! *1.获取数字到数组! *2.对数组排序 *3.遍历数组,使价格等于数组中数字的Li按照数...
  • qq_20419709
  • qq_20419709
  • 2017年09月20日 21:32
  • 353

oracle中对排序的总结

-- 按字符方式排序   select * from perexl order by perexl.xx   -- 按字符对应的数字方式排序   select * from perexl ord...
  • wangshfa
  • wangshfa
  • 2014年03月17日 13:54
  • 2861

集合TreeSet(自然排序与定制排序)

一、TreeSet的自然排序: 步骤:让元素自身具备比较性, 实现Compareable接口,覆盖其CompareTo方法   class Student implements Comparable/...
  • liuchuangjin
  • liuchuangjin
  • 2015年06月15日 09:37
  • 5569

坐标点排序

//================================================================================== //功能说明:设置两个Poin...
  • huixingshao
  • huixingshao
  • 2015年01月26日 10:09
  • 3491

双队列实现队列中元素排序

题目要求对一个队列中的元素进行排序,只允许使用一个临时队列,不能进行除去入队、出队、判空以外的任何操作。 实现方法为每次遍历队列,从中找出最小的元素,放入临时队列,遍历的过程是出队的过程,注...
  • xyt8023y
  • xyt8023y
  • 2015年03月05日 22:57
  • 1362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序
举报原因:
原因补充:

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