java排序算法代码
“java排序算法代码”相关的资料有哪些?“java排序算法代码”相关的范文有哪些?怎么写?下面是小编为您精心整理的“java排序算法代码”相关范文大全或资料大全,欢迎大家分享。
java 排序算法代码大全
java 排序算法代码大全
2012-04-17 14:58:02| 分类: JAVA 知识积累 |字号订阅 /**
* 插入排序:直接插入排序、折半插入排序和系尔排序 * 交换排序:冒泡排序和快速排序 * 选择排序:简单选择排序和堆排序 * 归并排序:归并排序 *
* 基本思想
* 插入排序:将第N个记录插入到前面(N-1)个有序的记录当中。 * 交换排序:按照某种顺序比较两个记录的关键字大小,然后根据需要交换两个记录的位置。 * 选择排序:根据某种方法选择一个关键字最大的记录或者关键字最小的记录,放到适当的位置。 *
* 排序方法比较
* 排序方法平均时间最坏时间辅助存储
* 直接插入排序 O(N2) O(N2) O(1) * 起泡排序 O(N2) O(N2) O(1)
* 快速排序 O(Nlog2N) O(N2) O(Nlog2N) * 简单选择排序 O(N2) O(N2) O(1
排序算法总结源代码
这里罗列了很多的排序算法,希望对大家有用!
shell排序
#include <iostream>
using namespace std;
/*
shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几
个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列
就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了。
*/
template<typename T>
void ShellSort(T array[], int length)
{
T temp;
// 增量从数组长度的一半开始,每次减小一倍
for (int increment = length / 2; increment > 0; increment /= 2)
{
for (int indexI = increment; indexI < length; ++indexI)
{
temp = array[indexI];
}
} } // 对一组增量为increment的元素进行插入排序 int indexJ; for (indexJ = inde
排序算法pascal代码集锦
排序
排序就是将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程。
排序的方法很多,下面介绍一些常见的排序方法,要求了解其原理,会编写代码,并会分析不同算法的时间复杂度,了解各个算法的稳定性。
稳定性指在原序列中相同元素的相对位置与排好序的新序列中相同元素的相对位置是否相同。若相同,则该算法是稳定的,否则不稳定。
简单排序
1.选择排序
选择排序的基本思想是:对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n]中最小者与L[1]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置……第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。时间复杂度:O(n2)。选择排序是稳定排序。 【例1】利用选择排序法对L[1..n]排序。 程序如下: program selectionSort; const n=7; var a:array[1..n] of integer; i,j,k,t:integer; begin assign(input,'selectionSort.in');reset(input); assign(out
Java排序算法汇总大全
package com.softeem.jbs.lesson4;
import java.util.Random; /**
* 排序测试类 *
* 排序算法的分类如下:
* 1.插入排序(直接插入排序、折半插入排序、希尔排序);
* 2.交换排序(冒泡泡排序、快速排序);
* 3.选择排序(直接选择排序、堆排序);
* 4.归并排序;
* 5.基数排序。 *
* 关于排序方法的选择:
* (1)若n较小(如n≤50),可采用直接插入或直接选择排序。
* 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
* (2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
* (3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 * */
public class SortTest {
/**
* 初始化测试数组的方法
JAVA冒泡、插入、选择排序算法
经常在笔试(或面试)中出现的JAVA经典算法,本人特此整理,希望有用
import java.io.*;
public class Paixu {
// 冒泡排序法 public void Maopao(int a[]) { for (int i = 1; i < a.length; i++) { for (int j = 0; j < a.length - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j + 1]; a[j + 1] = a[j]; a[j] = temp; } } } } // 插入排序法: public void Charu(int a[]) { for (int i = 1; i < a.length; i++) { for (int j = 0; j < i; j++) { if (a[j] > a[i]) { int temp = a[i]; for (int k = i; k > j; k--) { a[k] = a[k--]; } a[j] = temp; }
七种排序的Java代码
Java排序算法总结 羽落凡
冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序、堆排序等代码如下
Java版代码:
package com.kevin; /**
* 七种排序算法Java版 *
* @author Administrator * */
public class Sort {
/**
* 打印数组 *
* @param data */
public static void displayData(int[] data) { for (int d : data) {
System.out.print(d + \ }
System.out.println(); }
/**
* 冒泡排序算法,时间复杂度O(n2),算法具有稳定性,堆排序和快速排序算法不具有稳定性,即排序后相同元素的顺序会发生变化 *
* @param src */
public static void bubbleSort(int[] sr
java 实现算法导论书中的 快速排序 归并排序 插入排序
package algorithm.echo; import java.io.FileReader; import java.io.*;
import java.util.Random; import java.util.Scanner;
public class FirstTest { //static int num; static String path=\
static String path1=\归并排序.txt\ static String path2=\快速排序.txt\ static String path3=\插入排序.txt\ static String path4=\归并排序1.txt\ static int Ar[]=new int[30005]; static int A []=new int[30005]; static int B []=new int[30005]; static int C []=new int[30005];
public static void qkWenben (String m)throws Exception
java 实现算法导论书中的 快速排序 归并排序 插入排序
package algorithm.echo; import java.io.FileReader; import java.io.*;
import java.util.Random; import java.util.Scanner;
public class FirstTest { //static int num; static String path=\
static String path1=\归并排序.txt\ static String path2=\快速排序.txt\ static String path3=\插入排序.txt\ static String path4=\归并排序1.txt\ static int Ar[]=new int[30005]; static int A []=new int[30005]; static int B []=new int[30005]; static int C []=new int[30005];
public static void qkWenben (String m)throws Exception
c++9中排序算法解释及代码
9个排序算法
1. 计数排序
int a[1005]={0};//数值范围的大小 int main(){ int i,n,j,x; scanf(\ for(i=0;i a[x]++;//统计每个数值出现的次数 } for(i=0;i<=1000;i++) for(j=1;j<=a[i];j++) printf(\ puts(\ return 0; } 复杂度最低的排序算法,稳定排序,O(n+m),n为元素个数,m为数值范围。 2. 选择排序 int num[1005]; int main(){ int n,i,j,k,t; scanf(\ for(i=1;i<=n;i++) scanf(\ for(i=1;i<=n;i++){ k=i; for(j=i+1;j<=n;j++)//在[i+1,n]的范围找到最小值的下标 if(num[j] 复杂度为O(n^2),是不稳定的排序算法,可用“5 5 2”模拟。 3. 冒泡排序 int a[20005]; int main(){ int n,i,j,t; scanf(\ for(i=1;i<=n;i++) scanf(\ for(i=1;i //第i次冒泡时,判断[1,n-i]内每个数与它后面的数 for(j=1;j<=n-i;j++) if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; f=0;//发生了冒泡 } if(f)break;//如果没有发生冒泡,说明已经有序,可结束。 } for(i=1;i<=n;i++) printf(\puts(\return 0; 稳定排序,复杂度O(n^2),最好情况下O(n),冒泡排序发
c++9中排序算法解释及代码
9个排序算法
1. 计数排序
int a[1005]={0};//数值范围的大小 int main(){ int i,n,j,x; scanf(\ for(i=0;i a[x]++;//统计每个数值出现的次数 } for(i=0;i<=1000;i++) for(j=1;j<=a[i];j++) printf(\ puts(\ return 0; } 复杂度最低的排序算法,稳定排序,O(n+m),n为元素个数,m为数值范围。 2. 选择排序 int num[1005]; int main(){ int n,i,j,k,t; scanf(\ for(i=1;i<=n;i++) scanf(\ for(i=1;i<=n;i++){ k=i; for(j=i+1;j<=n;j++)//在[i+1,n]的范围找到最小值的下标 if(num[j] 复杂度为O(n^2),是不稳定的排序算法,可用“5 5 2”模拟。 3. 冒泡排序 int a[20005]; int main(){ int n,i,j,t; scanf(\ for(i=1;i<=n;i++) scanf(\ for(i=1;i //第i次冒泡时,判断[1,n-i]内每个数与它后面的数 for(j=1;j<=n-i;j++) if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; f=0;//发生了冒泡 } if(f)break;//如果没有发生冒泡,说明已经有序,可结束。 } for(i=1;i<=n;i++) printf(\puts(\return 0; 稳定排序,复杂度O(n^2),最好情况下O(n),冒泡排序发