数据结构与算法java实战篇--排序

数据结构与算法java实战篇--排序目录 一 冒泡排序 二 选择排序 三 插入排序 一 冒泡排序 冒泡排序从最左边开始 比较下标为 0 和后面一个元素的大小 如果出现前一个元素大于后一个元素就交换两个元素的位置 然后下标加 1 直到元素比较完 此时元素的最后一个就是所有元素中最大的元素 循环比较

大家好,我是讯享网,很高兴认识大家。

目录

一.冒泡排序

二.选择排序

 三.插入排序


一.冒泡排序

        冒泡排序从最左边开始,比较下标为0和后面一个元素的大小,如果出现前一个元素大于后一个元素就交换两个元素的位置,然后下标加1,直到元素比较完,此时元素的最后一个就是所有元素中最大的元素,循环比较,依次找出最大,次大的元素。

冒泡排序用到了两个for循环,时间复杂度为O(N^{2}
讯享网)

冒泡排序代码:

public void bubblesort(int[] nums){ int in,out,stemp; for (out=nums.length-1;out>1;out--){ //外循环out记录没有完成排序的元素个数 for (in=0;in<out;in++){ //内循环比较两个元素大小 if (nums[in] > nums[in+1]){ stemp=nums[in+1]; //如果满足条件,交换元素 nums[in+1]=nums[in]; nums[in]=stemp; } } } }

讯享网

二.选择排序

        选择排序算法思路是先从最左边两两比较,找到这些元素中最小的元素,然后将最小的元素移到最左边下标为0处,然后再找剩下中最小的,移动到下标为1处,循环如此。

时间复杂度度:O(N^{2})

选择排序代码:

讯享网public void selectionsort(int[] nums){ int in,out,min; int temp; for (out=0;out< nums.length-1;out++){ min=out; //保证每一次out循环的min都是最左边的元素 for (in=out+1;in<nums.length;in++) { if (nums[in] < nums[min]) { //如果目标元素小于nums[min],交换下标,向后继续比较,直到找到最小元素 min = in; } } //将最小的元素移动到最左边 temp = nums[min]; nums[min] = nums[out]; nums[out] = temp; } }

 三.插入排序

        插入排序将元素分为左右两边,左边已经排序好,右边没有排序,将右边的和左边的元素进行比较,找的该元素应该插入的位置然后插入。

插入排序时间复杂度:O(N)

  插入排序代码:

public void insertionsort(int[] nums){ int out,in; for (out=1;out<nums.length;out++){ int temp=nums[out]; //设置标志位 in=out; while (in>0&&nums[in-1]>=temp){ //左边元素大于标志位元素 nums[in]=nums[in-1]; //元素后移,从而空出标志元素的位置 --in; //向左移动,连续和左边的元素比较,查找标志元素应该插入的位置 } nums[in]= temp; } }

小讯
上一篇 2025-03-23 21:03
下一篇 2025-04-02 10:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53237.html