1、冒泡排序
核心思想:比较两个元素,如果前一个比后一个大则进行交换。经过对每个元素的比较,最后将最大的元素设置成最后一个元素。重复该操作,最后形成从小到大的排序。时间复杂度O(n2)。
1 //冒泡排序 2 public void bubblesort() { 3 long temp = 0L; 4 for(int i=0;i<elems-1;i++) { 5 for(int j=0;j<elems-i-1;j++) { 6 if(arr[j] > arr[j+1]) { 7 temp = arr[j]; 8 arr[j] = arr[j+1]; 9 arr[j+1] = temp; 10 } 11 } 12 } 13 }
2、选择排序
核心思想:扫描所有的元素,得到最小的元素,并将最小的元素与最左边第一个元素进行交换。再次扫描除第一位置的所有元素,得到最小的元素,与左边第二个元素进行交换。以此类推。时间复杂度O(n2)。
1 //选择排序 2 public void selectSort() { 3 int min=0; 4 long temp=0L; 5 for(int i=0;i<elems-1;i++) { 6 min=i; 7 for(int j=i+1;j<elems;j++) { 8 if(arr[min]>arr[j]) { 9 min=j; 10 } 11 } 12 temp=arr[i]; 13 arr[i]=arr[min]; 14 arr[min]=temp; 15 } 16 }
3、插入排序
核心思想:抽出一个元素,在其前面的元素中找到适当的位置进行插入。时间复杂度O(n2)。
1 //插入排序 2 public void insertSort() { 3 for (int i=1;i<elems;i++) { 4 long select = arr[i]; 5 int j = 0; 6 for (j = i;j > 0 && arr[j-1] >= select;j--) { 7 arr[j] = arr[j-1]; 8 } 9 arr[j] = select; 10 } 11 }