1、选择和冒泡排序
public class SelectAndBubble {
public static void main(String[] args) {
int array1[] = {7 ,5 ,0 ,9 ,2 ,8 ,4 ,3 ,1 };
int array2[] = {3 ,8 ,0 ,9 ,7 ,4 ,5 ,1 ,6 };
System.out.println("\n改进后的选择排序:" );
print(array1);
changeSelectSort(array1);
System.out.println();
print(array1);
System.out.println("\n冒泡排序:" );
print(array2);
bubbleSort(array2);
System.out.println();
print(array2);
}
private static void bubbleSort(int array []){
int temp = 0 ;
for (int i=0 ;i<array .length;i++){
for (int j=array .length-1 ;j>i;j--){
if (array [j] < array [j-1 ]){
temp = array [j-1 ];
array [j-1 ] = array [j];
array [j] = temp;
}
}
}
}
private static void selectSort(int array []){
int temp = 0 ;
for (int i = 0 ; i < array .length; i++) {
for (int j = i + 1 ; j < array .length; j++) {
if (array [j] < array [i]) {
temp = array [i];
array [i] = array [j];
array [j] = temp;
}
}
}
}
private static void changeSelectSort(int array []){
int temp = 0 ,index = 0 ;
for (int i=0 ;i<array .length;i++){
index = i;
for (int j=index+1 ;j<array .length;j++){
if (array [j] < array [index]){
index = j;
}
}
if (i != index){
temp = array [i];
array [i] = array [index];
array [index] = temp;
}
}
}
private static void print(int array []) {
for (int i = 0 ; i < array .length; i++) {
System.out.print(array [i] + " " );
}
}
}
2、对对象排序
public class Test {
public static void main(String [] args) {
Date days[] = new Date [5 ];
days[0 ] = new Date (2006 ,3 ,15 );
days[1 ] = new Date (2005 ,9 ,30 );
days[2 ] = new Date (2010 ,5 ,27 );
days[3 ] = new Date (2008 ,9 ,1 );
days[4 ] = new Date (2011 ,2 ,14 );
print(days);
selectSort(days);
System.out.println("排序后:" );
print(days);
}
private static void selectSort(Date days[]){
Date temp;
for (int i=0 ;i<days.length;i++){
for (int j=i+1 ;j<days.length;j++){
if (days[j].compare(days[i]) < 0 ){
temp = days[i];
days[i] = days[j];
days[j] = temp;
}
}
}
}
private static void print(Date days[]) {
for (int i = 0 ; i < days.length; i++) {
System.out.println(days[i]);
}
}
}
class Date {
int year ,month ,day ;
Date (int year ,int month ,int day ){
this.year = year ;
this.month = month ;
this.day = day ;
}
public int compare(Date a){
return this.year > a.year ? 1 : this.year < a.year ? -1 : this.month > a.month ? 1 : this.month < a.month ? -1 : this.day > a.day ? 1 : this.day < a.day ? -1 : 0 ;
}
public String toString(){
return "year:month:day--" + year + "." + month + "." + day ;
}
}
3、约瑟夫环问题
public class Test {
public static void main(String[] args) {
boolean array[] = new boolean [500 ];
int leftNum = array.length;
int counter = 0 ;
int index = 0 ;
for (int i=0 ;i<array.length;i++){
array[i] = true ;
}
while (leftNum > 1 ){
if (array[index ] == true ){
counter++;
}
if (counter == 3 ){
array[index ] = false ;
counter = 0 ;
leftNum--;
}
index ++;
if (index == array.length){
index = 0 ;
}
}
for (int j=0 ;j<array.length;j++){
if (array[j] == true ){
System.out.println(j);
}
}
}
}
4、二分法查找某个值
public class Test3 {
public static void main (String[] args) {
int array[] = {1 ,23 ,34 ,56 ,58 ,59 ,70 ,89 ,100 };
int index = binSearch(array,23 );
if (index == -1 ){
System.out .println("没有找到该值。" );
}else {
System.out .println("该值在数组的第" + (index+1 ) + "的位置。" );
}
}
private static int binSearch (int array[],int k){
int low = 0 ;
int high = array.length - 1 ;
int mid;
while (low <= high){
mid = (low + high)/2 ;
if (array[mid] < k){
low = mid + 1 ;
}else if (array[mid] > k){
high = mid - 1 ;
}else {
return mid;
}
}
return -1 ;
}
}
5、数组的拷贝1
public class Test {
public static void main (String[] args) {
String s1[] = {"asd" ,"fghjk" ,"zxcv" ,"qwertyu" };
String s2[] = new String[5 ];
System.arraycopy(s1, 0 , s2, 0 , s1.length);
for (int i=0 ;i<s2.length;i++){
System.out .println(s2[i]);
}
}
}
6、数组的拷贝2
public class Test {
public static void main (String[] args) {
int array[][] = {{1 ,2 },{3 ,4 ,5 },{6 ,7 }};
int arrayBak[][] = new int [3 ][];
System.arraycopy(array, 0 , arrayBak, 0 , array.length);
print(arrayBak);
System.out .println();
arrayBak[2 ][1 ] = 100 ;
print(arrayBak);
}
private static void print (int array[][]){
for (int i=0 ;i<array.length;i++){
for (int j=0 ;j<array[i].length;j++){
System.out .print(array[i][j] + " " );
}
System.out .println();
}
}
}