二分查找 -- 百度百科:http://baike.baidu.com/view/610605.htm
public static int binarySearch(int[] target,int key){
int low = 0;
int high = target.length-1;
while(low <= high){
int middle = (low + high)/2;
if(target[middle] == key)
return middle;
else if(target[middle] > key)
high = middle-1;
else
low = middle+1;
}
return -1;
}
快速排序 -- http://baike.baidu.com/view/115472.htm
/**
* 快速排序的O(nlogn)
* @param target
* @param start
* @param end
*/
public static void quickSort(int[] target, int start, int end) {
int i, j, key;
i = start;
j = end;
if (i < j) {
key = target[start];
// 从数组两端交替地向中间扫描
// 进行扫描的指针i,j;i从左边开始,j从右边开始
while (i < j) {
while (target[j] >= key && i < j)
j--;
target[i] = target[j];// 比枢纽元素小的移动到左边
while (target[i] <= key && i < j)
i++;
target[j] = target[i];// 比枢纽元素大的移动到右边
}
target[i] = key;// 枢纽元素移动到正确位置
quickSort(target, start, i - 1);// 前半个子表递归排序
quickSort(target, i + 1, end);// 后半个子表递归排序
}
}
冒泡排序 -- http://baike.baidu.com/view/254413.htm
/**
* 循环比较 比较交换O(n^2)
* @param target
*/
public static void bubbleSort(int[] target){
int length = target.length;
int temp = 0;
for(int i=0;i<length-1;i++){
for(int j=0;j<length-i-1;j++){
if(target[j] > target[j+1]){
temp = target[j+1];
target[j+1] = target[j];
target[j] = temp;
}
}
}
}
选择排序 -- http://baike.baidu.com/view/547263.htm
/**
* 交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,
* n值较小时,选择排序比冒泡排序快。
* @param target
*/
public static void choiseSort(int[] target){
int length = target.length;
int temp = 0;
for(int i=0;i<length-1;i++){
int pos = i;
for(int j=i+1;j<length;j++){
if(target[pos] > target[j]){
pos = j;
}
}
temp = target[pos];
target[pos] = target[i];
target[i] = temp;
}
}
分享到:
相关推荐
《C++ 就简单算法实现大全》是一本针对C++初学者和爱好者编写的书籍,旨在帮助读者快速掌握C++编程基础并理解并实践各种基本算法。C++是一种强大而灵活的面向对象编程语言,被广泛应用于软件开发、游戏编程、系统...
这里的“一些简单算法代码”集合提供了一些基础但实用的算法实现,旨在帮助初学者更好地理解和应用这些概念。下面我们将深入探讨这些算法及其在实际编程中的应用。 首先,排序算法是计算机科学中最基本的算法之一,...
算法 ,简单 入门 LeetCode网站开放的简单算法题,用于平时检验自己的算法能力,程序设计.
这个压缩包文件“停泵水锤的简易算法及算例.zip”很可能包含了关于如何理解和计算这种现象的详细资料,包括算法的描述和具体算例。 首先,我们来了解一下停泵水锤的基本概念。停泵水锤是由于液体的动量守恒和能量...
本文将深入探讨标题提及的"图像处理的直线简单算法程序",以及与之相关的"DDA(Digital Differential Analyzer,数字微分分析器)"和"Bresenham"算法。这两种算法是计算机图形学中用于在像素网格上高效绘制直线的...
这种简易算法可能是通过递归或迭代的方式来完成的,它可能避免了复杂的递归结构,使得理解和实现更为简单。 描述中提到“尚有待改进”,这暗示了该算法可能存在效率问题,或者在处理大规模数据时可能会遇到性能瓶颈...