數(shù)組重排序(如何將所有奇數(shù)都放在所有偶數(shù)前面)的深入分析
更新時(shí)間:2013年06月04日 17:12:57 作者:
本篇文章是對(duì)數(shù)組重排序(如何將所有奇數(shù)都放在所有偶數(shù)前面)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
這里介紹一種高效的能在O(n)時(shí)間復(fù)雜度內(nèi)完成的算法。
核心思想是:定義兩個(gè)指針,一個(gè)指針A從前往后掃描,一個(gè)指針B從后往前掃描。指針A掃描到偶數(shù)暫停,指針B掃描到奇數(shù)暫停,然后交換著兩個(gè)數(shù),交換之后繼續(xù)如上述掃描和交換,直到指針A和指針B重合停止。
這個(gè)算法的Java代碼如下:
package Reorder;
public class Reorder {
public static void main(String[] args) {
int[] list = { 1, 2, 3, 4, 5, 7, 9, 11 };
reorderOddEven(list);
}
public static void reorderOddEven(int[] list) {
int length = list.length;
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
System.out.print("\n");
int begin = 0;
int end = length - 1;
while (begin < end) {
while (begin < end && (list[begin] & 0x1) != 0)
begin++;
while (begin < end && (list[end] & 0x1) == 0)
end--;
if (begin < end) {
int temp = list[begin];
list[begin] = list[end];
list[end] = temp;
}
}
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
}
}
核心思想是:定義兩個(gè)指針,一個(gè)指針A從前往后掃描,一個(gè)指針B從后往前掃描。指針A掃描到偶數(shù)暫停,指針B掃描到奇數(shù)暫停,然后交換著兩個(gè)數(shù),交換之后繼續(xù)如上述掃描和交換,直到指針A和指針B重合停止。
這個(gè)算法的Java代碼如下:
復(fù)制代碼 代碼如下:
package Reorder;
public class Reorder {
public static void main(String[] args) {
int[] list = { 1, 2, 3, 4, 5, 7, 9, 11 };
reorderOddEven(list);
}
public static void reorderOddEven(int[] list) {
int length = list.length;
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
System.out.print("\n");
int begin = 0;
int end = length - 1;
while (begin < end) {
while (begin < end && (list[begin] & 0x1) != 0)
begin++;
while (begin < end && (list[end] & 0x1) == 0)
end--;
if (begin < end) {
int temp = list[begin];
list[begin] = list[end];
list[end] = temp;
}
}
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
}
}
相關(guān)文章
java使用hashMap緩存保存數(shù)據(jù)的方法
這篇文章主要介紹了java使用hashMap緩存保存數(shù)據(jù)的方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了java基于hashmap讀寫緩存數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08java 取交集方法retainAll的實(shí)現(xiàn)
這篇文章主要介紹了java 取交集方法retainAll的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06SpringBoot項(xiàng)目讀取外置logback配置文件的問題及解決
SpringBoot項(xiàng)目讀取外置logback配置文件的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08測(cè)試springboot項(xiàng)目出現(xiàn)Test Ignored的解決
這篇文章主要介紹了測(cè)試springboot項(xiàng)目出現(xiàn)Test Ignored的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java使用百度AI接口實(shí)現(xiàn)智能機(jī)器人對(duì)話系統(tǒng)
AI已經(jīng)在各行各業(yè)中廣泛應(yīng)用,助力于各式各樣的業(yè)務(wù),而在機(jī)器人對(duì)話中,我們可以通過利用百度AI中的自然語言處理、問答知識(shí)圖譜等技術(shù),使機(jī)器人可以更加智能化、自然化的為用戶服務(wù),本文介紹Java利用百度AI接口實(shí)現(xiàn)智能機(jī)器人對(duì)話系統(tǒng)2024-01-01詳解IDEA JUnit5測(cè)試套件運(yùn)行錯(cuò)誤的問題
這篇文章主要介紹了詳解IDEA JUnit5測(cè)試套件運(yùn)行錯(cuò)誤的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12