java基础----算法

来源:互联网 发布:高音 知乎 编辑:程序博客网 时间:2024/06/05 18:50

算法

  • 冒泡排序:从第一个数开始,比较相邻两个数的大小,如果前>后,交换位置,一轮结束后可以确定最后那个数是最大值,第二轮不管第一轮的最大值,再从第一个数开始比较相邻两数,比较到第一轮最大值前面结束,此时确定倒数第二个数在第二最大值,如此循环,每轮过后轮次+1,随着轮次增加每轮比较的次数下降
public void sort(int[] c){    for(int i=0;i<c.length-1;i++){//比较的轮数        for(int j=0;j<c.length-1-i;j++){//每轮比较的次数            if(c[j]>c[j+1]){                int temp = c[j+1];                c[j+1] = c[j];                c[j] = temp;            }        }    }}
  • 选择排序:第一轮:从第一个数开始,第二个数直到最后一个数都和第一个数比较,比第一个数就交换位置,一轮过后第一个数为最小值;第二轮:从第二个数开始,第三个数直到最后一个数都和第二个数比较,。。。。这样每轮都能确定!这轮!最前面的数是最小的。如此循环
public void sort(int[] c){        for(int i=0;i<c.length-1;i++){//比较的轮数,c[i]表示为这轮的目标,后面的数都和从c[i]比较            for(int j=i+1;j<c.length;j++){                if(c[i]>c[j]){                    int temp = c[j];                    c[j] = c[i];                    c[i] = temp;                }            }        }   }
  • 快速排序:递归思想,选第一个数为基准值,开始索引坐标start=0,end=length-1;基准值一直不变
    • 第一次从最后往前每个数都和基准值比较,基准值大,交换位置,end坐标发生变化
    • 第二次从最前往后每个数都和基准值比较,基准值小,交换位置,start坐标发生变化
    • 重复上面两个步骤,直到start>=end,此时以基准值为中心,左边序列都比基准值小,右边序列都比基准值大,对左右两边序列进行递归
public void sort(int c[], int start, int end) {          int i, j;          i = start;          j = end;          if ((c == null) || (c.length == 0))              return;          while (i < j) {//查找基准点下标              while (i < j && c[i] <= c[j])                  // 以数组start下标的数据为key,右侧扫描                  j--;              if (i < j) { // 右侧扫描,找出第一个比key小的,交换位置                  int temp = c[i];                  c[i] = c[j];                  c[j] = temp;              }              while (i < j && c[i] < c[j])                  // 左侧扫描(此时c[j]中存储着key值)                  i++;              if (i < j) { // 找出第一个比key大的,交换位置                  int temp = c[i];                  c[i] = c[j];                  c[j] = temp;              }          }          if (i - start > 1) { // 递归调用,把key前面的完成排序              quickSort(c, 0, i - 1);          }          if (end - j > 1) {              quickSort(c, j + 1, end); // 递归调用,把key后面的完成排序          }      }
0 0
原创粉丝点击