当前位置: 首页 > news >正文

北京网站建设设计公司软文营销写作技巧有哪些?

北京网站建设设计公司,软文营销写作技巧有哪些?,幼儿园老师对班级网站建设,帝国cms制作网站地图选择排序 算法思路 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 选择排序的步骤: 1>首先在未排序序列中找到最小(大)元素…

选择排序

算法思路

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。

 选择排序的步骤:

1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2>再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。
3>重复第二步,直到所有元素均排序完毕。

动画演示

 

算法代码

public static void selectSort1(int[] a){for (int i = 0; i < a.length; i++) {int minIndex = i;for (int j = i+1 ; j <a.length ; j++) {if(a[j] <= a[minIndex]){minIndex = j;}}if(minIndex == i) continue;  //说明没找到更小的int tmp = a[minIndex];a[minIndex] = a[i];a[i] = tmp;}}

复杂度分析

时间复杂度 O(n^2)  等差数列

空间复杂度 O(1)

稳定性  不稳定

选择排序优化

 选择排序的优化思路一般是在一趟遍历中,同时找出最大值与最小值,放到数组两端,这样就能将遍历的趟数减少一半。第一次选择最大值与最小值,过程如下:

算法代码 

public static void selectSort2(int[] a){int left  = 0;int right = a.length-1;while(left<right) {int minIndex = left;int maxIndex = right;for(int i = left+1;i<=right;i++) {if(a[i] < a[minIndex]) {minIndex = i;}if(a[i] > maxIndex) {maxIndex = i;}}//交换左边int tmp1 = a[minIndex];a[minIndex] = a[left];a[left] = tmp1;if(maxIndex == left) {   //很重要的一点细节maxIndex = minIndex;}//交换右边int tmp2 = a[maxIndex];a[maxIndex] = a[right];a[right] = tmp2;left++;right--;}}

时间复杂度测试


接下来我们试着用大量数据测试一下。

int[] a = new int[10_0000];  //10万个数据测试

1.orderArray函数实现生成一个基本有序数列,即从小到大排列。

public static void orderArray(int[] a) {for (int i = 0; i < a.length; i++) {a[i] = i;}}

2.notOrderArray函数生成一个倒序数列,即从大到小排列。

public static void notOrderArray(int[] a) {for (int i = 0; i < a.length; i++) {a[i] = a.length-i;} 
}

3.randomArray函数生成一个随机无序数列。

 public static void randomArray(int[] a) {Random random = new Random();for (int i = 0; i < a.length; i++) {a[i] = random.nextInt(10_0000);}}

4.testInsertSort函数测试   System.currentTimeMillis() 返回值单位是毫秒。

 public static void testInsertSort(int[] a){int[] tmpArray = Arrays.copyOf(a,a.length);long startTime = System.currentTimeMillis();    //注意用long接收shellSort(tmpArray);long endTime = System.currentTimeMillis();  //返回单位是毫秒System.out.println("选择排序耗时:"+(endTime-startTime));}

5.main函数调用执行

public static void main(String[] args) {int[] a = new int[10_0000];//有序System.out.println("基本有序数列");orderArray(a);testInsertSort(a);//倒序System.out.println("逆序数列");notOrderArray(a);testInsertSort(a);//随机乱序System.out.println("无序数列");randomArray(a);testInsertSort(a);
}

测试结果

 从结果来看,对于大量的数据,优化后的反而更慢了,应该是这种排序算法更适合少量数据。

 

我们放250个数据进行测试。

                           结果证明耗时上还是有所下降的。                                   

完整代码

import java.util.Random;public class sort {public static void main(String[] args) {int[] a = new int[10_0000];//有序System.out.println("基本有序数列");orderArray(a);testInsertSort(a);//无序System.out.println("逆序数列");notOrderArray(a);testInsertSort(a);//乱序System.out.println("无序数列");randomArray(a);testInsertSort(a);}public static void selectSort(int[] a){for (int i = 0; i < a.length; i++) {int minIndex = i;for (int j = i+1 ; j <a.length ; j++) {if(a[j] <= a[minIndex]){minIndex = j;}}if(minIndex == i) continue;  //说明没找到更小的int tmp = a[minIndex];a[minIndex] = a[i];a[i] = tmp;}}//生成有序数组  从小到大排列public static void orderArray(int[] a) {for (int i = 0; i < a.length; i++) {a[i] = i;}}//n无序 其实就是从大到小排列public static void notOrderArray(int[] a) {for (int i = 0; i < a.length; i++) {a[i] = a.length-i;}}//乱序 随机生成序列public static void randomArray(int[] a) {Random random = new Random();for (int i = 0; i < a.length; i++) {a[i] = random.nextInt(10_0000);}}//大量数据测试public static void testInsertSort(int[] a){int[] tmpArray = Arrays.copyOf(a,a.length);long startTime = System.currentTimeMillis();    //注意用long接收selectSort(tmpArray);long endTime = System.currentTimeMillis();System.out.println("选择排序耗时:"+(endTime-startTime));}
}

创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。

http://www.15wanjia.com/news/11498.html

相关文章:

  • 做amazon当地电信屏蔽了网站app关键词推广
  • 网站被301职业技能培训平台
  • 浏览器网站大全莱阳seo外包
  • 布吉做棋牌网站建设有哪些公司网络营销推广方案策划与实施
  • 怎么在别人网站上做锚文本链接线上营销工具
  • 网站开发速成班百度运营推广
  • 仿淘宝网站源码 asp微信管理
  • 营销型高端网站建设价格千锋教育学费
  • b2b电子商务网站排名链接提交工具
  • 淄博桓台学校网站建设定制怎样制作一个网页
  • 做动态网站用哪个程序软件比较简单?长沙seo网站排名优化公司
  • 本地的南通网站建设长沙网站推广公司
  • 网站没流量seo综合查询软件排名
  • 自己做的网站被攻击了seo常用工具包括
  • 网站设计 站网站收录一般多久
  • 深圳商城网站建设报价单品牌推广经典案例
  • 可以做兼职笔译的网站自动引流免费app
  • 网站建设 昆明 价格大型网站建设方案
  • 湖北企业建站系统平台收录排名好的发帖网站
  • 买了一台配置强悍的电脑怎么做网站服务器线上运营推广方案
  • 专为网站做点击量东莞做网站公司电话
  • 公司网站维护都需要怎么做app地推接单平台
  • 门户网站开发技术百度广告联盟价格
  • 武汉网站建设公司027深圳市推广网站的公司
  • 烟台开发区做网站互联网营销师培训多少钱
  • 大连 做 企业网站seo单词优化
  • 用vs2012做网站案例seo权威入门教程
  • 广州的网站建设公司整站快速排名
  • 重庆造价工程信息网官网网站的优化公司
  • 企业网站的建设流程包含哪些环节网站品牌推广公司