[/color][color=darkred][size=medium][/size]转载
最近在研究Java数据结构和算法
练习写了一个用插入排序的算法
查找部分使用二分查找实现的
和大家分享一下 呵呵
还请各位大牛多指教啊
呵呵
Java代码
import java.util.Random;
public class InsertSort {
/**
* 插入排序算法实现
* @author Jason
* @param arr
* @return
*/
public static int[] insertSort(int[] arr) {
int searchCount = 0;
for (int out = 1; out < arr.length; out++) {
outPrint(arr);
if (arr[out]>arr[out-1]) {
continue;
}
//普通查找算法
/*for (int inn = 0; inn < out; inn++) {
searchCount++;
if (arr[out]<arr[inn]) {
move(arr,out,inn);
break;
}else {
continue;
}
}*/
//使用二分查找算法找到要插入的位置
int start = 0;
int end = out - 1;
while (start <= end) {
searchCount++;
int searchIndex = (start + end) / 2;
if (arr[out] > arr[searchIndex]) {
start = searchIndex + 1;
} else if (arr[out] < arr[searchIndex]) {
if (searchIndex == 0
|| (searchIndex != 0 && arr[out] > arr[searchIndex - 1])) {
move(arr, out, searchIndex);
break;
} else {
end = searchIndex - 1;
continue;
}
} else {
move(arr, out, searchIndex);
break;
}
}
}
check(arr);
System.out.println("Search Count:" + searchCount);
return arr;
}
/**
* 移动数据
*/
private static void move(int[] arr, int out, int inn) {
int changeTemp = arr[out];
for (int i = out; i > inn; i--) {
arr[i] = arr[i - 1];
}
arr[inn] = changeTemp;
}
/**
* 输出
*/
private static void outPrint(int[] arr) {
System.out.println();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "|");
}
}
/**
* 结果检查
*/
private static boolean check(int[] arr) {
System.out.println();
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[i - 1]) {
System.out.println("Sort Error!");
return false;
}
}
System.out.println("Sort Success!");
return true;
}
/**
* 测试方法
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random ran = new Random();
int[] arr = new int[60];
for (int i = 0; i < arr.length; i++) {
arr[i]=ran.nextInt(300000);
}
System.out.println("Befor sort:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"|");
}
arr = InsertSort.insertSort(arr);
System.out.println("After sort:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"|");
}
}
}
分享到:
相关推荐
斐讯DC1 插排固件
### 智能逆变插排关键技术...总之,智能逆变插排作为新兴的电力管理工具,集成了先进的逆变技术和智能化功能,正逐步成为现代社会电力供应系统的重要组成部分,为实现高效、智能、可持续的能源管理提供了新的解决方案。
基于STM32的智能插排设计,设定好时间后每天定时开关插座。本人用在控制水草缸中的 灯、CO2、风冷。该产品可同时控制4路,停电时通过RTC时钟确保时间准确以及纽扣电池供电。压缩包里面包含源码,PCB,下载即能用。...
二、智能插排的功能特性 1. 远程控制:通过连接WiFi,用户可以随时随地通过手机APP控制智能插排的开关,实现家电远程操作。 2. 定时任务:设定定时开关,如早晨自动开启咖啡机,晚上自动关闭灯光,提高生活便利性。...
以上是对“基于单片机的智能插排设计”的知识点的总结,设计者不仅考虑了硬件的选型和功能实现,还兼顾了软件的程序设计,确保了系统的稳定性和可靠性。通过技术创新,设计的智能插排不仅能有效节约能源,还能增强...
预期实现方面,该智能节能插排的所有端口将可以灵活配置,支持独立定时,并具备自动休眠和电流过载保护功能。这样,每个端口都将根据实际需要进行精确控制,确保能源的高效使用。 综上所述,基于AVR的智能节能插排...
5. **智能控制**:现代插排的智能化特性,如通过APP控制、定时开关、电量监测等功能的实现。 6. **节能技术**:介绍节能设计,如自动识别负载、待机功耗降低等,以减少不必要的电力消耗。 7. **市场分析**:分析多...
这种电路设计可能包括了微处理器控制、继电器切换、传感器检测等功能,旨在实现对插排插座的智能控制。 描述中的“行业分类-电子-一种插排通断电控制电路”进一步明确了这个主题属于电子工程的范畴,特别是针对插排...
本文介绍的基于单片机的多功能智能插排,不仅具备传统插排的功能,还引入了多种智能化特性,通过WiFi模块实现了手机对插排的无线控制,满足了用户对节能和安全的双重需求。 首先,本文中提到的单片机是智能插排的...
首先,电子政务是指政府机构利用信息技术,特别是互联网技术,实现政务信息的采集、处理、传播和服务,以提高政府工作效率,促进政府与公众之间的信息交流,增强政府的透明度和公共服务能力。在这个过程中,信息安全...
标题中的“行业分类-电子-关于基于WIFI控制具有电能计费功能的插排的说明分析”揭示了本文档将深入探讨一个电子行业的创新应用,即通过WiFi技术实现远程控制并带有电能计量功能的智能插排。这种插排不仅能够方便用户...
本文深入探讨了一种基于ARM处理器的无线WiFi插排设计,该设计采用STM32 F103VET微控制器,通过WiFi模块连接至互联网,实现了对家用电器的远程操控。 ARM处理器作为现代嵌入式系统的核心,以其高性能、低功耗和可...
在Java编程中,"插排(temp存储,直接移动)"通常指的是插入排序算法的实现方式。插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置...
可自检电源插排有助于实现有效的电源分配和保护,确保关键设备在突发停电或电力故障时仍能正常运行。 4. **冗余电源设计**:为增加系统的可靠性,电子政务系统常常采用冗余电源设计,即多个电源插排互为备份,一旦...
在这个领域中,停电自锁电源插排是一个重要的硬件设施,它确保了在电力中断时,关键设备能够得到保护,防止因突然断电导致的数据丢失或系统损坏。 首先,我们要理解停电自锁电源插排的工作原理。这种特殊的电源插排...
在电子政务中,这样的智能插座可以用于监控政府办公设备的能耗,帮助制定节能策略,实现绿色办公。同时,它也可以作为教育公众节能意识的工具,通过公开这些数据,增强公众对能源问题的认识。 总之,这个电源插排...
在这个案例中,“可吸附的电源插排”可能是电子政务在公共设施管理或能源监控方面的实践,利用物联网技术实现远程控制和监测,提高能源使用效率,减少浪费。 物联网(IoT)在电子政务中的应用,主要是通过传感器、...
1. **按键控制**:通过STM32的GPIO功能,可以实现对插排开关的控制,按键按下后,微控制器响应并执行相应的开/关操作。 2. **电源管理**:通过ADC检测电压和电流,以监控负载状态,并可能根据负载大小调整电源策略...