package org.edisonyoung.commons.datastructure;
import java.util.Comparator;
/**
* @author edison
* @date 2009-11-2
*/
public class SortUtils {
/**
* 选择排序
*/
public static void sortBySelection(int[] array,int off,int len){
for(int i=off;i<len-1;i++){
int min=i;
for(int j=i+1;j<len;j++){
if(array[min]>array[j])
min=j;
}
swap(array,min,i);
}
}
/**
* 冒泡排序
*/
public static void sortByBubble(int[] array,int off,int len){
for(int i=off;i<len;i++){
for(int j=off;j<len-i-1;j++){
if(array[j+1]<array[j]){
swap(array,j+1,j);
}
}
}
}
/**
* 插入排序(Insertion Sort 对象数组)
*/
public static <T> void sortByInsertion1(T[] t,Comparator<? super T> comp){
for(int i=0;i<t.length;i++)
for(int j=i;j>0&&comp.compare(t[j-1], t[j])==1;j--)
swap(t,j,j-1);
}
/**
* 插入排序(Insertion Sort Core)
*/
public static void sortByInsertion(int[] array,int off,int len){
for(int i=off+1;i<len;i++){
int sign=array[i];
int j=0;
for(j=i-1;j>=off&&array[j]>sign;j--){
array[j+1]=array[j];
}
array[j+1]=sign;
}
}
private static <T> void swap(T[] t,int i,int j){
T sign=t[i];
t[i]=t[j];
t[j]=sign;
}
private static void swap(int[] t,int i,int j){
int sign=t[i];
t[i]=t[j];
t[j]=sign;
}
public static void main(String[] args){
int[] array={5,6,3,1,7,2,4};
//sortByInsertion(array,0,array.length);
//sortByBubble(array,0,array.length);
sortBySelection(array,0,array.length);
for(int element:array){
System.out.print(element+",");
}
// Person p1=new Person(4);
// Person p2=new Person(1);
// Person p3=new Person(3);
// Person p4=new Person(2);
//
// Person[] pArray={p1,p2,p3,p4};
//
// Arrays.asList(pArray);
//
// sortByInsertion1(pArray,new Comparator<Person>(){
//
// @Override
// public int compare(Person p1, Person p2) {
// return p1.getAge()<p2.getAge()?0:1;
// }
//
// });
//
// for(Person p:pArray){
// System.out.print(p.getAge()+",");
// }
}
}
分享到:
相关推荐
三个排序问题实现,用的是C语言,希望大家多多支持~~~~~~~~~~~真心希望能解决您的问题
VB 三个数的排序 VB 三个数的排序 VB 三个数的排序
大学生
自己写的三个排序算法的比较。快速排序、归并排序、简单排序 对三个排序算法所消耗时间进行统计,比较时间效率 程序是在Linux下用C写的,vc下并未做测试。
c三大排序c三大排序c三大排序c三大排序c三大排序摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!
对三个数的排序进行了编译,通过对min,max,mid进行的定义进行整体的排序思路,编写代码。
一个Java数学排序小程序,给定三个整数x,y,z,程序处理后让这三个数由小到大排列输出,代码编写思路:想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则...
库函数,排序,数据类型与指针,三个PPT 是掌握的必备要素
用C语言实现3个数从小到大排序的文本文件
三个大小排序.cpp
输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现频次最多的元素与排序后数组中前三大...
这是用汇编编写的选择、插入和冒泡三个排序算法,有注释,希望对你有所帮助。
List Control的一个排序的程序,带有排序的三角,供大家学习参考
基数排序的三个步骤实现
C语言程序设计-编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序;.c
实验项目名称:COP2000实验仪中排序方法探讨 (4学时) 一、实验目的 综合运用所学计算机原理知识,设计微程序实现题目规定的指令。 二、实验内容 任务:COP2000实验仪中排序方法探讨。 排序: 对于存放在R0~R3中的...
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡...
排序算法测试实验通过设计测试数据集,编写测试程序,用于测试三种算法的正确性,三种算法在不同复杂性上的表现(最好情况、最差情况、平均情况),三种算法每次的的比较频率和腾挪频率。 使用说明:Sort_Test.cpp...
三种排序算法比较,快速排序,桶排序,还有……排序
用指针实现的C语言排序算法,这是我们班的同学集体智慧的结晶