java写的排序(冒泡排序,插入排序,选择排序,快速排序)
来源:互联网 发布:linux 禁止ip访问 编辑:程序博客网 时间:2024/06/05 14:49
package com.wql.www;
public class MySort {
public static void main(String[] args){
int arrLen = 9999999;
int content = 100000;
//int arrLen = 10;
//int content = 200;
MyArray arrObj = new MyArray();
int[] arr = arrObj.createArr(arrLen,content);
//arrObj.showArr(arr);
/*--------------------------------------*/
//SortIF s = new MySelect();
MyFost s = new MyFost();
System.out.println(java.util.Calendar.getInstance().getTime());
//s.sort(arr);
s.sort(arr, 0, arrLen-1);
System.out.println(java.util.Calendar.getInstance().getTime());
//arrObj.showArr(arr);
}
}
public static void main(String[] args){
int arrLen = 9999999;
int content = 100000;
//int arrLen = 10;
//int content = 200;
MyArray arrObj = new MyArray();
int[] arr = arrObj.createArr(arrLen,content);
//arrObj.showArr(arr);
/*--------------------------------------*/
//SortIF s = new MySelect();
MyFost s = new MyFost();
System.out.println(java.util.Calendar.getInstance().getTime());
//s.sort(arr);
s.sort(arr, 0, arrLen-1);
System.out.println(java.util.Calendar.getInstance().getTime());
//arrObj.showArr(arr);
}
}
interface SortIF{
public void sort(int[] arr);
}
/**
* 快速排序
* 数据量9999999,耗时1s-2s
* Sat Nov 26 16:33:13 CST 2016
* Sat Nov 26 16:33:15 CST 2016
* */
class MyFost implements SortIF{
public void sort(int[] arr){}
public void sort(int[] arr,int start,int end){
int i = start;
int j = end;
boolean flag = true;
while(i != j){
if(flag){
if(arr[i] >= arr[j]){
reversal(arr, i, j);
i++;
flag = false;
}else{
j--;
}
}else{
if(arr[i] > arr[j]){
reversal(arr, i, j);
j--;
flag = true;
}else{
i++;
}
}
}
//System.out.println("start="+start+" end="+end+" 中间的index:"+i+" arr[i]="+arr[i]);
if(i>start){
sort(arr,start,i-1);
}
if(j<end){
sort(arr,j+1,end);
}
}
//交换位置,可以把此函数写在接口里面
public void reversal(int [] arr,int i ,int j){
arr[i] = arr[i]+arr[j];
arr[j] = arr[i]-arr[j];
arr[i] = arr[i]-arr[j];
}
}
/**
* 选择排序:每次从待排序数列中拿最小的值排到有序数列
* 200000 13s
* Sat Nov 26 13:51:30 CST 2016
* Sat Nov 26 13:51:43 CST 2016
* */
class MySelect implements SortIF{
public void sort(int[] arr){
int j = 0;
int minI = 0;
for(int i = 0;i < arr.length;i++){
minI = i;
for(j = i+1;j<arr.length ;j++){
if(arr[minI]>arr[j]){
minI = j;
}
}
if(i != minI){
arr[minI] = arr[minI]+arr[i];
arr[i] = arr[minI]-arr[i];
arr[minI] = arr[minI]-arr[i];
}
}
}
}
* 选择排序:每次从待排序数列中拿最小的值排到有序数列
* 200000 13s
* Sat Nov 26 13:51:30 CST 2016
* Sat Nov 26 13:51:43 CST 2016
* */
class MySelect implements SortIF{
public void sort(int[] arr){
int j = 0;
int minI = 0;
for(int i = 0;i < arr.length;i++){
minI = i;
for(j = i+1;j<arr.length ;j++){
if(arr[minI]>arr[j]){
minI = j;
}
}
if(i != minI){
arr[minI] = arr[minI]+arr[i];
arr[i] = arr[minI]-arr[i];
arr[minI] = arr[minI]-arr[i];
}
}
}
}
/**
* 插入排序:每次从待排序数列中拿第一个值排到有序数列
* 200000数据 17s
*Sun Nov 20 21:38:44 CST 2016
*Sun Nov 20 21:39:02 CST 2016
* */
class MyInsert implements SortIF{
public void sort(int[] arr){
int tmpV = 0;
int j = 0;
int tmpI = 0;
for(int i = 0;i < arr.length;i++){
tmpV = arr[i];
tmpI = i;
j = i-1;
while(j >= 0 && arr[j] > tmpV){
arr[j+1] = arr[j];
arr[j] = tmpV;
j--;
tmpI--;;
}
arr[tmpI] = tmpV;
}
}
}
* 插入排序:每次从待排序数列中拿第一个值排到有序数列
* 200000数据 17s
*Sun Nov 20 21:38:44 CST 2016
*Sun Nov 20 21:39:02 CST 2016
* */
class MyInsert implements SortIF{
public void sort(int[] arr){
int tmpV = 0;
int j = 0;
int tmpI = 0;
for(int i = 0;i < arr.length;i++){
tmpV = arr[i];
tmpI = i;
j = i-1;
while(j >= 0 && arr[j] > tmpV){
arr[j+1] = arr[j];
arr[j] = tmpV;
j--;
tmpI--;;
}
arr[tmpI] = tmpV;
}
}
}
/**
* 冒泡排序
* 200000数据 1m8s
*Sun Nov 20 17:38:16 CST 2016
*Sun Nov 20 17:39:24 CST 2016
* */
class MyMaoPao implements SortIF{
public void sort(int[] arr){
//int arrValue = 0;
//int arrIndex = 0;
int temp = 0;
for(int i = 0;i < arr.length;i++){
for(int j = i+1;j< arr.length;j++){
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
//创建数据
class MyArray{
int arrValue = 0;
int[] arr = null;
public int[] createArr(int len,int content){
arr = new int[len];
for(int i = 0;i< arr.length;i++){
arrValue = (int)(Math.random()*content);
arr[i] = arrValue;
}
return arr;
}
//打印数组
public void showArr(int[] arr){
for(int i = 0 ;i< arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println("\n");
}
}
0 0
- java写的排序(冒泡排序,插入排序,选择排序,快速排序)
- Java 排序 快速排序 冒泡排序 选择排序 插入排序
- java实现冒泡排序,插入排序,选择排序,快速排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- java几种基本的排序方法,快速排序,冒泡排序,选择排序,插入排序
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 冒泡排序 快速排序 插入排序 堆排序 选择排序
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 数组排序:快速排序,选择排序,冒泡排序,插入排序
- java数组的排序,选择排序,冒泡排序,插入排序
- java 数组的排序,含冒泡、插入、选择、快速排序。
- Java冒泡排序,插入排序,选择排序
- java冒泡排序,选择排序,插入排序
- [JAVA]选择排序,插入排序,冒泡排序
- java-------冒泡排序,选择排序,插入排序
- java 冒泡排序 插入排序 选择排序
- Java冒泡排序,插入排序,选择排序
- Java实现排序(插入排序+冒泡排序+选择排序+ Shell排序+快速排序)
- JavaScript——控制div的移动
- 使用IMQ(中介队列设备)模块
- SparkSQL简介
- 使用python获取网页编码格式
- AngularJS-模块化
- java写的排序(冒泡排序,插入排序,选择排序,快速排序)
- zookeeper-01-基本概念.md
- SQLite DBHelper 跨版本更新数据库
- 【Android 基础】Animation 动画介绍和实现
- Apache负载均衡设置的三大策略原则
- 深入理解Linux中内存管理
- linux有关ifconfig的解决方法
- 树莓派驱动6轴传感器MPU6500与SPI初体验(二)
- SQL Server 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作