• 常用排序算法


    • 冒泡排序

      简单的冒泡排序我就不赘述了,这里提供给大家的是改进冒泡排序法。

      public void sort(int[] data) {

      int low = 0;

      int high = data.length - 1;

      int index = low;

      while (high > low) {

      for (int i = low; i < high; i++) {
      if (data[i] > data[i + 1]) {
      Calculator.Swap(data, i, i + 1);
      index = i;
      }
      }

      high = index;

      for (int i = high; i > low; i--) {
      if (data[i] < data[i - 1]) {
      Calculator.Swap(data, i, i - 1);
      index = i;
      }
      }

      low = index;
      }
      }
    • 插入排序

      public void sort(int[] data) {

      for (int i = 1; i < data.length; i++) {

      int temp = data[i];

      int j = i - 1;

      while (temp < data[j]) {
      data[j + 1] = data[j];
      j--;
      if (j == -1) {
      break;
      }
      }

      data[j + 1] = temp;
      }
      }
    • 选择排序

      public void sort(int[] data) {

      for (int i = 0; i < data.length; i++) {

      int index = i;

      for (int j = i + 1; j < data.length; j++) {

      if (data[j] < data[index]) {
      index = j;
      }
      }

      if (i != index) {
      Calculator.Swap(data, i, index);
      }
      }
      }
    • 希尔排序

      public void sort(int[] data, int index) {

      int j;
      int temp;
      int dataLength;
      int pointer;

      dataLength = (int) index / 2;
      while (dataLength != 0) {

      for (j = dataLength; j < index; j++) {
      temp = data[j];
      pointer = j - dataLength;

      while (temp < data[pointer] && pointer >= 0 && pointer <= index) {
      data[pointer + dataLength] = data[pointer];

      pointer = pointer - dataLength;
      if (pointer < 0 || pointer > index)
      break;
      }

      data[pointer + dataLength] = temp;
      }
      dataLength = dataLength / 2;
      }
      }
    • 归并排序

      public void merge(int[] a, int low, int mid, int high) {

      int[] b = new int[high - low + 1];
      int s = low;
      int t = mid + 1;
      int k = 0;

      while (s <= mid && t <= high) {
      if (a[s] <= a[t])
      b[k++] = a[s++];
      else
      b[k++] = a[t++];
      }

      while (s <= mid)
      b[k++] = a[s++];

      while (t <= high)
      b[k++] = a[t++];

      for (int i = 0; i < b.length; i++) {
      a[low + i] = b[i];
      }
      }

      public void mergesort(int a[], int low, int high) {
      if (low < high) {
      mergesort(a, low, (low + high) / 2);
      mergesort(a, (low + high) / 2 + 1, high);
      merge(a, low, (high + low) / 2, high);
      }
      }

      public void sort(int[] data) {
      mergesort(data, 0, data.length - 1);
      }
    • 快速排序

      public void sort(int[] data, int left, int right) {

      if (left < right) {

      int index = data[left];
      int i = left;
      int j = right + 1;

      while (true) {

      while (i + 1 < data.length && data[++i] < index)
      ;
      while (j - 1 > -1 && data[--j] > index)
      ;

      if (i >= j) {
      break;
      } else {
      Calculator.Swap(data, i, j);
      }
      }

      data[left] = data[j];
      data[j] = index;

      sort(data, left, j - 1);
      sort(data, j + 1, right);
      }
      }
  • 相关阅读:
    数据库查找
    关于购买功能的相关学习
    信息登记功能例子
    总结
    团队作业
    团队作业
    团队作业
    团队作业
    团队作业
    第一节:库的管理
  • 原文地址:https://www.cnblogs.com/rainisic/p/Sorting_algorithm.html
Copyright © 2020-2023  润新知