日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java实现各种算法

發(fā)布時(shí)間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现各种算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

package sortAlgorithm;

import java.io.File;

import java.io.IOException;

import java.sql.Time;

import java.util.Random;

?* @author sky

?* 該類給出各種排序算法

public class sort{

? ? private static Integer[] elem(int n){

? ? ? ? int N=n;

? ? ? ? Random random=new Random();

? ? ? ? Integer elem[]=new Integer[N];

? ? ? ? for (int i=0;i<N;i++){

? ? ? ? ? ? elem[i]=random.nextInt(1000);

? ? ? ? return elem;

? ? public static void main (String Args[]) throws InterruptedException{

? ? ? ? int n=30000;

? ? ? ? Integer elem[]=elem(n);

? ? ? ? long start,end;

? ? ? ? ?

? ? ? ? class sort0 extends Thread{

? ? ? ? ? ? Integer elem[];

? ? ? ? ? ? int n;

? ? ? ? ? ? sort0(Integer elem[],int n){

? ? ? ? ? ? ? ? this.elem=elem;

? ? ? ? ? ? ? ? this.n=n;

? ? ? ? ? ? public void run(){

? ? ? ? ? ? ? ? System.out.println("線程啟動(dòng)");

? ? ? ? ? ? ? ? straightInsertSort(elem,n);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? sort0 s1=new sort0(elem,n);

? ? ? ? elem=elem(n);

? ? ? ? sort0 s2=new sort0(elem,n);

? ? ? ? elem=elem(n);

? ? ? ? sort0 s3=new sort0(elem,n);

? ? ? ? elem=elem(n);

? ? ? ? sort0 s4=new sort0(elem,n);

? ? ? ? elem=elem(n);

? ? ? ? sort0 s5=new sort0(elem,n);

? ? ? ? s1.start();

? ? ? ? s2.start();

? ? ? ? s3.start();

? ? ? ? s4.start();

? ? ? ? s5.start();

? ? ? ? s2.join();

? ? ? ? s1.join();

? ? ? ? s3.join();

? ? ? ? s4.join();

? ? ? ? s5.join();

? ? ? ? System.out.println("多線程簡(jiǎn)單插入排序:");

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? straightInsertSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("簡(jiǎn)單插入排序:");

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? shellSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("希爾排序:");

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? bubbleSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("冒泡排序:");

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? quickSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("快速排序:");

? ? ? ? System.out.println(end-start);*/

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? simpleSelectionSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("簡(jiǎn)單選擇排序:");

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? heapSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("堆排序:");

? ? ? ? System.out.println(end-start);

? ? ? ? elem=elem(n);

? ? ? ? start=System.currentTimeMillis();

? ? ? ? mergeSort(elem,n);

? ? ? ? end=System.currentTimeMillis();

? ? ? ? System.out.println("歸并排序:");

? ? ? ? System.out.println(end-start);

? ? //顯示排序結(jié)果

? ? public static <T extends Comparable<? super T>> void show(T[] elem,int n){

? ? ? ? for (int i=0;i<n;i++){

? ? ? ? ? ? System.out.print(elem[i]);

? ? ? ? ? ? System.out.print(' ');

? ? ? ? System.out.println();

? ? }

? ? //交換元素

? ? private static <T extends Comparable<? super T>> void swap(T[] elem,int i,int j){

? ? ? ? T tmp=elem[i];

? ? ? ? elem[i]=elem[j];

? ? ? ? elem[j]=tmp;

? ? //直接插入排序法,復(fù)雜度為O(n^2)

? ? public static <T extends Comparable<? super T>> void straightInsertSort (T elem[],int n){

? ? ? ? for (int i=1;i<n;i++){

? ? ? ? ? ? T e=elem[i];

? ? ? ? ? ? int j;

? ? ? ? ? ? for (j=i-1;j>=0 && e.compareTo(elem[j])<0;j--){

? ? ? ? ? ? ? ? elem[j+1]=elem[j];

? ? ? ? ? ? }

? ? ? ? ? ? elem[j+1]=e;

? ? //shell插入排序算法,復(fù)雜度為O(n^1.5)

? ? private static <T extends Comparable<? super T>> void ?shellInsertHelp(T elem[],int n,int incr){http://www.huiyi8.com/jiaoben/?flash特效

? ? ? ? for (int i=incr;i<n;i++){

? ? ? ? ? ? T e=elem[i];

? ? ? ? ? ? int j=i-incr;

? ? ? ? ? ? for (;j>=0 && e.compareTo(elem[j])<0;j=j-incr){

? ? ? ? ? ? ? ? elem[j+incr]=elem[j];

? ? ? ? ? ? elem[j+incr]=e;

? ? public static <T extends Comparable<? super T>> void shellSort(T elem[],int n ){

? ? ? ? for (int incr=n/2;incr>0;incr=incr/2){

? ? ? ? ? ? shellInsertHelp(elem,n,incr);

? ? //冒泡排序算法,時(shí)間復(fù)雜度為O(n^2)

? ? public static <T extends Comparable<? super T>> void bubbleSort(T elem[],int n){

? ? ? ? for (int i=n-1;i>0;i--){

? ? ? ? ? ? for (int j=0;j<i;j++){

? ? ? ? ? ? ? ? if (elem[j].compareTo(elem[i])>0){

? ? ? ? ? ? ? ? ? ? swap(elem,i,j);

? ? //快速排序算法,時(shí)間復(fù)雜度為O(n*log(n))

? ? private static <T extends Comparable<? super T>> int partition(T elem[],int low,int high){

? ? ? ? while (low<high){

? ? ? ? ? ? for (;elem[high].compareTo(elem[low])>=0 && low<high;high--);

? ? ? ? ? ? swap(elem,high,low);

? ? ? ? ? ? for (;elem[high].compareTo(elem[low])>=0 && low<high;low++);

? ? ? ? ? ? swap(elem,high,low);

? ? ? ? return low;

? ? private static <T extends Comparable<? super T>> void quickSortHelp(T elem[],int low,int high){

? ? ? ? if (low<high){

? ? ? ? ? ? int pivot=partition(elem,low,high);

? ? ? ? ? ? quickSortHelp(elem,low,pivot-1);

? ? ? ? ? ? quickSortHelp(elem,pivot+1,high);

? ? public static <T extends Comparable<? super T>> void quickSort(T elem[],int n){

? ? ? ? quickSortHelp(elem,0,n-1);

? ? //簡(jiǎn)單選擇排序算法,時(shí)間復(fù)雜度為O(n^2)

? ? public static <T extends Comparable<? super T>> void simpleSelectionSort(T elem[],int n){

? ? ? ? for (int i=0;i<n-1;i++){

? ? ? ? ? ? int lowIdx=i;

? ? ? ? ? ? for (int j=i+1;j<n;j++){

? ? ? ? ? ? ? ? if (elem[lowIdx].compareTo(elem[j])>0)

? ? ? ? ? ? ? ? ? ? lowIdx=j;

? ? ? ? ? ? swap(elem,lowIdx,i);

? ? //堆排序,時(shí)間復(fù)雜度為O(n*log(n))

? ? private static <T extends Comparable<? super T>> void heapAdjust(T elem[],int low,int high){

? ? ? ? for (int i=low,lhs=2*i+1 ;lhs<=high;lhs=2*i+1){

? ? ? ? ? ? if (lhs<high && elem[lhs].compareTo(elem[lhs+1])<0)lhs++;

? ? ? ? ? ? if (elem[i].compareTo(elem[lhs])<0){

? ? ? ? ? ? ? ? swap(elem,i,lhs);

? ? ? ? ? ? ? ? i=lhs;

? ? ? ? ? ? }else break;

? ? public static <T extends Comparable<? super T>> void heapSort(T elem[],int n){

? ? ? ? //初始化堆

? ? ? ? for (int i=(n-2)/2;i>=0;i--){

? ? ? ? ? ? heapAdjust(elem,i,n-1);

? ? ? ? }

? ? ? ? swap(elem,0,n-1);

? ? ? ? //排序

? ? ? ? for (int i=n-2;i>0;--i){

? ? ? ? ? ? heapAdjust(elem,0,i);

? ? ? ? ? ? swap(elem,0,i);

? ? //歸并排序算法,時(shí)間復(fù)雜度為O(n*log(n))

? ? private static <T extends Comparable<? super T>> void simpleMerge(T elem[],T tmpElem[],int low ,int mid, int high){

? ? ? ? int i=low,j=mid+1,k=low;

? ? ? ? for (;i<=mid && j<=high;k++){

? ? ? ? ? ? if (elem[i].compareTo(elem[j])<=0)

? ? ? ? ? ? ? ? tmpElem[k]=elem[i++];

? ? ? ? ? ? else

? ? ? ? ? ? ? ? tmpElem[k]=elem[j++];

? ? ? ? for (;i<=mid;i++){

? ? ? ? ? ? tmpElem[k++]=elem[i];

? ? ? ? for (;j<=high;j++){

? ? ? ? ? ? tmpElem[k++]=elem[j];

? ? ? ? for (;low<=high;low++){

? ? ? ? ? ? elem[low]=tmpElem[low];

? ? private static <T extends Comparable<? super T>> void mergeHelp(T elem[],T tmpElem[],int low ,int high){

? ? ? ? if (low < high){

? ? ? ? ? ? int mid=(low+high)/2;

? ? ? ? ? ? mergeHelp(elem,tmpElem,low,mid);

? ? ? ? ? ? mergeHelp(elem,tmpElem,mid+1,high);

? ? ? ? ? ? simpleMerge(elem,tmpElem,low,mid,high);

? ? public static <T extends Comparable<? super T>> void mergeSort(T elem[],int n){

? ? ? ? T[] tmpElem=(T[])new Comparable[n];

? ? ? ? mergeHelp(elem,tmpElem,0,n-1);


轉(zhuǎn)載于:https://blog.51cto.com/9111046/1440955

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的java实现各种算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。