插入排序用java寫,java中如何排序

本文目錄一覽:

基礎的~java直接插入排序 求大蝦指點~~~= =

說幾個我認為錯誤的地方吧:

1、你不是double數組嗎? 怎麼用 int 來取值呢? ” int m=n[i];//代碼1″

2、代碼3,4怎麼都是給n[j] 賦值呢? 賦值兩次?

3、”n[j]=n[0];//代碼4″ 這個是什麼意思?

Java編程:簡化的插入排序?

代碼:(如果輸入必須是有序數組,不然方法內要先排序)

結果:

java插入排序演算法

import java.util.Arrays;

public class Insert {

public static void main(String[] args) {

int[] ary={8,3,7,1,9,4};

selectionSort(ary);

System.out.println(Arrays.toString(ary));

}

public static void selectionSort(int[] ary) {

int i,j,t;

for(i=1;iary.length;i++){

t=ary[i];

for(j=i-1;j=0tary[j];j–){

ary[j+1]=ary[j];

}ary[j+1]=t;

}

}

}

插入演算法的原理是當要被插入的數比數組中元素小就放在他的前面,加了一個中間變數t,把數組元素先放那存著。如果成功插入就把插入數據放到對應的數組位置。然後下一個繼續先放在t裡面存著。直到最後一個數

java 插入排序 ,下面是一些代碼,請大師寫下剩下的代碼 實現一下插入排序。

因為是要人為在控制台輸入數字來排序,所以對於程序來說如果不設定一個值可以中斷程序,那程序將無終止的,那 if( str.equals(“x”) )break; 這個就代表當用戶在控制台輸入 x 後,程序就停止了,不用再輸入了。

插入法如下:(其中一部分) insert(arr,p,count); 這地方起碼要把插入地方傳進參數吧

int []arr = new int[25];

Scanner scan = new Scanner(System.in);

int count=0;

String aa=””;

while(count 25){

aa =scan.next();

if(aa.equals(“x”)){

break;

}

int p = Integer.parseInt(aa); //注意轉換異常

insert(arr,p,count);

count++;

}

for(int i=0;iarr.length;i++){

System.out.println(“arr[“+i+”]== “+arr[i]);

}

}

public static void insert(int[] a,int num,int count){

a[count] =num;

if(a !=null){

for(int i=1;ia.length;i++){

int temp = a[i],j=i;

if(a[j-1] temp){

while(j=1 a[j-1]temp){

a[j]=a[j-1];

j–;

}

}

a[j]=temp;

}

}

}

Java 直接插入排序法

比如數組[3,2,1,5]

這段處理就返回[1,2,3,5]

它的處理是從第二位開始依次跟前邊的比,比前邊的小就往前移動。

也就是[3,2,1,5]

[2,3,1,5]

[1,2,3,5]

(int j = i – 1; j = 0 temp array[j]; j–)

i是這次處理的下標,第一次是1,第二次是2,第三次是3,對應上邊原數組裡的2,1,5

處理開始時把下標i對應的值存在temp里,j表示的是i前邊的下標,temp array[j]的時候說明i下標的值比前邊的小,所以把小的值拿到前邊去。

這麼看是很抽象的,自己在本上寫的數組,畫一下處理過程會更有助於你理解。

JAVA實現插入排序

public class Test {

public static void main(String[] args) {

int[] source = { 1, 3, 2, 5, 12, 3, 123, 23, 2, 541, 1, 76, 76 };

Test test = new Test();

test.printArray(source);

test.insertSort(source);

test.printArray(source);

}

public void insertSort(int[] source) {

for (int i = 1; i source.length; i++) {

for (int j = i; (j 0) (source[j] source[j – 1]); j–) {

swap(source, j, j – 1);

}

}

printArray(source);// 輸出插入排序後的數組值

}

private void swap(int[] source, int x, int y) {

int temp = source[x];

source[x] = source[y];

source[y] = temp;

}

public void printArray(int[] source) {

for (int i : source) {

System.out.print(i + ” “);

}

System.out.println();

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/306563.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 12:01
下一篇 2025-01-02 12:01

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論