乙個陣列記為a,有序;另乙個陣列記為b,無序; 請列印b中的所有不在a中的數;a陣列長度為n,b陣列長度為m;
code:
現有紅白藍三個不同顏色的小球,亂序排列在一起,請重新排列這些小球,使得紅白藍三色的同顏色的球在一起。這個問題之所以叫荷蘭國旗問題,是因為我們可以將紅白藍三色小球想象成條狀物,有序排列後正好組成荷蘭國旗。//簡單的二分查詢,複雜度為 o(m * log n)
public
static
void
printallnotincluded(int a, int b)
if (a[mid] > b[i]) else
}if (!contains)
}}
code:
在陣列中的兩個數字如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。求整個陣列中逆序對的差值和。//類似於快速排序的切分過程
public
static
int partition(int arr, int l, int r, int p) else
if (arr[l] > p) else
}return
newint ;
}
code:
public
static
intsmallsum(int arr)
return mergesort(arr, 0, arr.length - 1);
}public
static
intmergesort(int arr, int l, int r)
int mid = l + ((r - l) >> 1);
return mergesort(arr, l, mid) + mergesort(arr, mid + 1, r) + merge(arr, l, mid, r);
}public
static
intmerge(int arr, int l, int m, int r)
while (p1 <= m)
while (p2 <= r)
for (i = 0; i < help.length; i++)
return res;
}
已知乙個整數陣列a[n],找出n個元素在數軸上兩個相鄰元素之間的最大間距。//測試**
// for test
public
static
intcomparator(int arr)
int res = 0;
for (int i = 1; i < arr.length; i++)
}return res;
}// for test
public
static
int generaterandomarray(int maxsize, int maxvalue)
return arr;
}// for test
public
static
int copyarray(int arr)
int res = new
int[arr.length];
for (int i = 0; i < arr.length; i++)
return res;
}// for test
public
static boolean isequal(int arr1, int arr2)
if (arr1 == null && arr2 == null)
if (arr1.length != arr2.length)
for (int i = 0; i < arr1.length; i++)
}return
true;
}// for test
public
static
void
printarray(int arr)
for (int i = 0; i < arr.length; i++)
system.out.println();
}// for test
public
static
void
main(string args)
}system.out.println(succeed ? "nice!" : "****ing ****ed!");
}
code:
public static int maxgap(int nums)
int len = nums.length;
intmin = integer.max_value;
intmax = integer.min_value;
for (int i = 0; i < len; i++)
if (min == max)
boolean hasnum = new boolean[len + 1];
int maxs = new int[len + 1];
int mins = new int[len + 1];
int bid = 0;
for (int i = 0; i < len; i++)
int res = 0;
int lastmax = maxs[0];
for (int i = 1; i <= len; i++)
}return res;
}
2 排序演算法 快速排序
問題描述 利用快速排序演算法對下列例項排序,在演算法執行過程中,寫出陣列 a第一次排序後被分割的過程。a 65,70,75,80,85,55,50,2 解題思想 在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大的記錄一次就能交換到後面的單元,總的比較和移動次數較少。對於輸入的陣列a p...
2 排序演算法 氣泡排序
氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。作為最簡單...
演算法筆記2 排序
1.選擇排序 首先,找到陣列中最小的那個元素,其次,將他和陣列第乙個元素交換位置,再次,在剩下的元素中找到最小的元素,將他和陣列的第二個元素交換位置。如此反覆,直到將整個陣列排序。不斷的選擇剩餘元素的最小值 2.插入排序 對部分有序陣列很有效 為了給要插入的元素騰出空間,我們需要將其餘所有元素在插入...