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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java将数组元素倒置(反转)的方法?我只想到了5种,有其他方式欢迎补充

發(fā)布時(shí)間:2025/3/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java将数组元素倒置(反转)的方法?我只想到了5种,有其他方式欢迎补充 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 題目
  • 算法實(shí)現(xiàn)
    • 方法一
    • 方法二
    • 方法三
    • 方法四
    • 方法五
  • 代碼以及效率測(cè)試
  • 打印結(jié)果

題目

將字符串?dāng)?shù)組[“1”, “2”, “3”, “4”, “5”, “6”]倒置,反轉(zhuǎn)后的新數(shù)組為[“6”,“5”,“4”,“3”,“2”,“1”]。

算法實(shí)現(xiàn)

方法一

使用java中l(wèi)ist的倒置函數(shù),具體的實(shí)現(xiàn)如下:

/*** 使用Collections.reverse來倒置數(shù)組** @param strArray 原來的字符串?dāng)?shù)組* @return*/public static String[] reverseArray1(String[] strArray) {//定一個(gè)新的數(shù)組String[] newArray = new String[strArray.length];List<String> list = new ArrayList<>();Collections.addAll(list, strArray);Collections.reverse(list);list.toArray(newArray);return newArray;}

方法二

先生成一個(gè)新的數(shù)組,然后將元素倒置放入新的數(shù)組,具體算法如下:

/*** 倒置字符串?dāng)?shù)組** @param strArray* @return*/public static String[] reverseArray2(String[] strArray) {int len = strArray.length;//定義一個(gè)新的數(shù)組String[] newArray = new String[len];for (int i = 0; i < len; i++) {newArray[len - 1 - i] = strArray[i];}return newArray;}

方法三

先生成一個(gè)新的數(shù)組,然后將元素倒置放入新的數(shù)組,取數(shù)組中間位置,只遍歷一半就可以完成賦值,具體代碼如下:

/*** 倒置字符串?dāng)?shù)組優(yōu)化** @param strArray* @return*/public static String[] reverseArray3(String[] strArray) {int len = strArray.length;int mid = len/2;//定義一個(gè)新的數(shù)組String[] newArray = new String[len];for (int i = 0; i <= mid; i++) {newArray[i] = strArray[len-1 -i];newArray[len-1 - i] = strArray[i];}return newArray;}

方法四

先生成一個(gè)新的數(shù)組,然后將元素倒置放入新的數(shù)組,取數(shù)組中間位置,只遍歷一半就可以完成賦值,在方法三的基礎(chǔ)上將除法修改成移位運(yùn)算,具體代碼如下:

/*** 倒置字符串?dāng)?shù)組優(yōu)化,將除法替換成移位操作** @param strArray* @return*/public static String[] reverseArray4(String[] strArray) {int len = strArray.length;int mid = len >> 1;//定義一個(gè)新的數(shù)組String[] newArray = new String[len];for (int i = 0; i <= mid; i++) {newArray[i] = strArray[len - 1 - i];newArray[len - 1 - i] = strArray[i];}return newArray;}

方法五

使用用鏈表的方式,先把數(shù)組轉(zhuǎn)換成用鏈表,然后倒序取值賦值給新數(shù)組,這個(gè)只是一種思路,具體代碼如下:

/*** 可以使用鏈表倒置的方式** @param strArray* @return*/public static String[] reverseArray5(String[] strArray) {LinkedList<String> linkedList = new LinkedList<>();Collections.addAll(linkedList, strArray);String[] newArray = new String[strArray.length];int loop = 0;while (!linkedList.isEmpty()) {newArray[loop] = linkedList.pollLast();loop++;}return newArray;}

代碼以及效率測(cè)試

/*** 打印數(shù)組** @param strArray*/public static void printArray(String[] strArray) {for (int i = 0, len = strArray.length; i < len; i++) {System.out.print(strArray[i] + " ");}System.out.println();}public static void main(String[] agrs) {String[] a = {"1", "2", "3", "4", "5", "6"};System.out.println("原來的數(shù)組為:");printArray(a);System.out.println("使用reverseArray1倒置后的數(shù)組為:");printArray(reverseArray1(a));System.out.println("使用reverseArray2倒置后的數(shù)組為:");printArray(reverseArray2(a));System.out.println("使用reverseArray3倒置后的數(shù)組為:");printArray(reverseArray3(a));System.out.println("使用reverseArray4倒置后的數(shù)組為:");printArray(reverseArray4(a));System.out.println("使用reverseArray5倒置后的數(shù)組為:");printArray(reverseArray5(a));System.out.println("-----下面針對(duì)耗時(shí)情況進(jìn)行測(cè)試-----");int loopTimes = 1000000;long startTime1 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {reverseArray1(a);}System.out.println(loopTimes + "次循環(huán),reverseArray1耗時(shí):" + (System.currentTimeMillis() - startTime1) + "ms");long startTime2 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {reverseArray2(a);}System.out.println(loopTimes + "次循環(huán),reverseArray2耗時(shí):" + (System.currentTimeMillis() - startTime2) + "ms");long startTime3 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {reverseArray3(a);}System.out.println(loopTimes + "次循環(huán),reverseArray3耗時(shí):" + (System.currentTimeMillis() - startTime3) + "ms");long startTime4 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {reverseArray4(a);}System.out.println(loopTimes + "次循環(huán),reverseArray4耗時(shí):" + (System.currentTimeMillis() - startTime4) + "ms");long startTime5 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {reverseArray5(a);}System.out.println(loopTimes + "次循環(huán),reverseArray5耗時(shí):" + (System.currentTimeMillis() - startTime5) + "ms");}

打印結(jié)果

原來的數(shù)組為: 1 2 3 4 5 6 使用reverseArray1倒置后的數(shù)組為: 6 5 4 3 2 1 使用reverseArray2倒置后的數(shù)組為: 6 5 4 3 2 1 使用reverseArray3倒置后的數(shù)組為: 6 5 4 3 2 1 使用reverseArray4倒置后的數(shù)組為: 6 5 4 3 2 1 使用reverseArray5倒置后的數(shù)組為: 6 5 4 3 2 1 -----下面針對(duì)耗時(shí)情況進(jìn)行測(cè)試----- 1000000次循環(huán),reverseArray1耗時(shí):526ms 1000000次循環(huán),reverseArray2耗時(shí):314ms 1000000次循環(huán),reverseArray3耗時(shí):194ms 1000000次循環(huán),reverseArray4耗時(shí):125ms 1000000次循環(huán),reverseArray5耗時(shí):217ms 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的java将数组元素倒置(反转)的方法?我只想到了5种,有其他方式欢迎补充的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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