java排序(汇总)
来源:互联网 发布:刀锋铁骑高级书数据 编辑:程序博客网 时间:2024/05/18 02:32
交换排序
public class Maopao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,89,23,2,3,10,30,100};
for(int i=0;i<a.length;i++)
{
for(int j=i+1;j<a.length;j++)
{
if(a[i]<a[j])
{
a[i]=a[j]+a[i];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];//不需要存储空间
}
}
}
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}
冒泡排序
private static void UpSort(int[] a) {
// TODO Auto-generated method stub
boolean flag=true;//冒泡改进
for(int i=0;i<a.length && flag;i++)
{
flag=false;
for(int j=0;j<a.length-i-1;j++)
{
if(a[j]>a[j+1])
{
flag=true;
a[j]=a[j]+a[j+1];
a[j+1]=a[j]-a[j+1];
a[j]=a[j]-a[j+1];
}
}
if(!flag)
{
break;
}
}
}
改进的冒泡排序 快速排序
public class KuaiSuPaiXu {
public static void main(String[] args) {
int a[] = { 1, 89, 23, 2, 3, 10, 30, 100 ,1000,200,5,7,1000,300};
// System.out.println(a.length);
QuickSort(a, 0, a.length - 1);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
private static void QuickSort(int[] a, int low, int high) {
int l = low;
int h = high;
int key = a[low];
while(l<h)
{
//比key小得放前面
while(key<a[h] && l<h){h--;}
if(l<h)
{
/*int temp=a[h];
a[h]=a[l];
a[l]=temp;
l++;*/
a[l++]=a[h];
}
//比key大的放后面
while(key>a[l] && l<h){l++;}
if(l<h)
{
/*int temp=a[h];
a[h]=a[l];
a[l]=temp;
h--;*/
a[h--]=a[l];
}
}
a[l]=key;//存储空间nlogn
if(l>low){QuickSort(a,low,l-1);}
if(h<high){QuickSort(a,l+1,high);}
}
}
选择排序 选择最小或最大的放到最后
public class Xuanze {
public static void main(String[] args) {
int a[]={1,89,23,2,3,10,30,100};
int minIndex=0;//标志符,最小标志符
for(int i=0;i<a.length;i++)
{
minIndex=i;
for(int j=i+1;j<a.length;j++)
{
if(a[minIndex]>a[j])
{
minIndex=j;
}
}
if(minIndex!=i)
{
//说明有比a[i]还小得数,则交换之
a[minIndex]=a[minIndex]+a[i];
a[i]=a[minIndex]-a[i];
a[minIndex]=a[minIndex]-a[i];
}
}
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}
希尔排序
public class Test {
public static void main(String[] args) {
int a[]={1,0,90,123,23,1,5,-1,-10};
shellSort(a);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
private static void shellSort(int[] a) {
// TODO Auto-generated method stub
int startc = 0;//比较数字的起始下标
int distance=a.length/2;//增量下标大于0;
int temp;//暂存数据
int j;//遍历数据
while(distance!=0)
{
System.out.println("distace="+ distance);
for(j=distance;j<a.length;j++)
{
temp=a[j];
startc=j-distance;
System.out.println("startc+"+startc);
while(temp<a[startc]&& startc<a.length && startc>=0)
{
a[startc+distance]=a[startc];
startc=startc-distance;
if(startc<0 || startc>a.length)
{
break;
}
}
a[startc+distance]=temp;
}
distance=distance/2;
}
}
}
直接插入排序
public class InsertSort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,23,0,4,25,18,0,36,11,10,5};
for(int i=1;i<a.length;i++)
{
for(int j=i;j>0 && a[j-1]>a[j];j--)
{
swap(a,j-1,j);
}
}
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
private static void swap(int[] a, int i, int j) {
// TODO Auto-generated method stub
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
归并排序
public class MergeSort1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = { 1, 89, 23, 2, 3, 10, 30, 100, 1000, 200, 300, 300 };
MergeSort(a, 0, a.length - 1);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
public static void MergeSort(int[] a, int start, int end) {
if (start < end) {
int midd = (start + end) / 2;
MergeSort(a, start, midd);
MergeSort(a, midd + 1, end);
Merge(a, start, midd, midd + 1, end);
// 多路归并
/*
* int midd1=(start+end)/4; MergeSort(a,start,midd1);
* MergeSort(a,midd1+1,midd1*2); MergeSort(a,midd1*2+1,midd1*3);
* MergeSort(a,midd1*3+1,end); Merge(a,start,midd1,midd1+1,midd1*2);
* Merge(a,midd1*2+1,midd1*3,midd1*3+1,end);
* Merge(a,start,midd1*2,midd1*2+1,end);
*/
}
}
public static void Merge(int[] a, int start1, int end1, int start2, int end2) {
int i, j;
i = start1;
j = start2;
int[] temp = new int[end2 - start1 + 1];
int k = 0;
while (i <= end1 && j <= end2) {
if (a[i] > a[j]) {
temp[k++] = a[j++];
} else {
temp[k++] = a[i++];
}
}
while (i <= end1) {
temp[k++] = a[i++];
}
while (j <= end2) {
temp[k++] = a[j++];
}
k = start1;
for (int element : temp) {
a[k++] = element;
System.out.print(element + " ");
}
System.out.println();
}
}
- java排序(汇总)
- (转载)JAVA排序汇总
- 排序汇总(Java实现)
- Java排序算法总结(汇总版)
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序汇总
- Java 排序汇总
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序汇总
- JAVA排序类汇总
- JAVA排序汇总
- JAVA排序汇总[zz]
- JAVA排序汇总
- 解决成本的错误和问题
- JAVA缓存
- (二)源码分析之一:mysqld的启动流程
- 为什么父类指针可以指向子类反之则不行
- hibernate.cfg.xml
- java排序(汇总)
- 【ARM环境搭建】Redhat Enterprise6.3 yum源的配置
- EditText 空指针问题
- iOS开发 - 合并百度地图API真机和模拟器的.a文件
- Tomcat 系统架构与设计模式
- 最长公共重复不重复子串系列问题
- 音频处理
- 正则删除字符串左、右或两端的空格经验总结
- iOS开发-设置tabBar的背景图片