Java数据结构学习(一) —— 基本排序算法

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 }

猜你喜欢

转载自www.cnblogs.com/Maggie2019/p/10636467.html
今日推荐