排序算法

Posted 好奇害死猫+1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。

冒泡排序
用二重循环实现冒泡排序

int[] nums = {4,5,7,4,2};
for (int i=0;i<nums.length-1;i++){
  for (int j=0;j<nums.length-1-i;j++){
    if (nums[j]>nums[j+1]){
      int temp = nums[j];
      nums[j] = nums[j+1];
      nums[j+1] = temp;
    }
  }
}
for (int num:nums){
   System.out.print(num);
}

  速记口诀:
  N个数字类排队
  两两相比小靠前
  外层循环N-1
  内层循环N-1-i

  共比较次数: n(n-1)/2

直接插入排序

int [] data = {23,45,16,7,42};
for (int i=1; i<data.length; i++){
  int currentData = data[i];
  int temp = i;
  while (temp>0 && data[temp-1]>currentData){
    //前一位大于后一位,前一位元素赋值给后一位
    data[temp] = data[temp-1];
    temp --;
  }
  data[temp] = currentData; //交换数据
}

 

以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度