簡單排序
代碼
package com.h;public class MyArrayList { private long[] arr; private int element; public MyArrayList(){ arr=new long[6]; } //增加數據 並排序 public void insert( long value){ int i; for(i=0; i<element; i++){ if(value < arr[i]){ break; } } for(int j=element;j>i;j--){ arr[j]=arr[j-1]; } arr[i]=value; element++; } //插入 public void insert1(long value){ arr[element]=value; element++; } //二分法查找 public int binarySearch(long value){ int low=0; int pow=element; int middo=(low+pow)/2==0?(low+pow)/2low+pow)/2+1; while (true){ if(arr[middo]==value){ return middo; }else{ if(arr[middo]>value){ pow=middo-1; }else{ low=middo+1; } } } } //顯示數據 public void display(){ System.out.print("["); for (int i=0;i<element;i++){ System.out.print(arr[i]+","); } System.out.print("]"); } //冒泡排序 public void bubbleSort(){ long temp=0; long[] arr=this.arr; for(int i=0;i<arr.length-1;i++){ for (int j=arr.length-1;j>i;j--){ if(arr[j]<arr[j-1]){ temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } } //選擇排序 public void selectSort(){ long[] arr=this.arr; long temp=0; int k=0; for(int i=0;i<arr.length;i++){ k=i; for(int j=i;j<arr.length;j++){ if(arr[j]<arr[k]){ k=j; } } temp=arr[i]; arr[i]=arr[k]; arr[k]=temp; } } //插入排序 public void insertSort(){ long[] arr=this.arr; long temp=0; for (int i=1;i<arr.length;i++){ temp=arr[i]; int j=i; while (j>0 && arr[j-1]>=temp){ arr[j]=arr[j-1]; j--; } arr[j]=temp; } }}
測試數據
package com.h;public class test { public static void main(String[] agrs){ MyArrayList arrayList=new MyArrayList(); arrayList.insert1(12); arrayList.insert1(30); arrayList.insert1(20); arrayList.insert1(-2); arrayList.insert1(9); arrayList.insert1(2); arrayList.display(); arrayList.insertSort(); arrayList.display(); }}
推薦閱讀:
※Leetcode之旅|刪除鏈表中重複元素
※學點演算法之棧的學習與應用
※文本比較演算法——最小編輯距離、圖的最短路以及最長公共子序列
※數字三角形
※QG之魔鬼訓練營系列:第五周周記