import java.util.Arrays;
import java.util.Random;
public class Sort {
public static void main(String [] args){
Sort s = new Sort();
int [] arr = s.randomArray();
// //冒泡排序,降序打印
// s.bubbleSortASC(arr);
// //冒泡排序,升序打印
// s.bubbleSortDESC(arr);
//选择排序,升序打印
// s.selectSortAEC(arr);
//优化后的选择排序,降序打印
// s.selectSortOptDESC(arr);
// int [] arr2 = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
// int key = 12;
//自己写的折半查找
// int find = s.halfOfSearch(arr2, key);
//调用API的折半查找
// int find2 = Arrays.binarySearch(arr2, key);
// System.out.println("find: " + find);
// System.out.println("find: " + find2);
}
//打印排序后
public static void sortPrint(int []arr){
System.out.println("sortPrint:");
for(int i : arr){
System.out.print( " " + i + " ");
}
System.out.println("");
}
//打印排序前
public static void beforePrint(int []arr){
System.out.println("beforePrint:");
for(int i : arr){
System.out.print( " " + i + " ");
}
System.out.println("");
}
//随机取值
public int[] randomArray(){
Random r = new Random();
int arrayLength = 10;
int [] arr = new int[arrayLength];
for(int i = 0; i < arrayLength; i++){
arr[i] = r.nextInt(100);
}
beforePrint(arr);
return arr;
}
//交换位置
public static void swap(int a, int b, int []arr){
arr[a] ^= arr[b];
arr[b] ^= arr[a];
arr[a] ^= arr[b];
}
//冒泡排序,升序打印
public void bubbleSortASC(int []arr){
for(int i = 0, len = arr.length; i < len - 1; i++){
for(int j = 0; j < len - i - 1; j++){
if(arr[j] < arr[j + 1]){
swap(j, j + 1, arr);
}
}
}
sortPrint(arr);
}
//冒泡排序,降序打印
public void bubbleSortDESC(int []arr){
for(int i = 0, len = arr.length; i < len - 1; i++){
for(int j = 0; j < len - i - 1; j++){
if(arr[j] > arr[j + 1]){
swap(j, j + 1, arr);
}
}
}
sortPrint(arr);
}
//选择排序,升序打印
public void selectSortAEC(int []arr){
for(int i = 0; i < arr.length - 1; i++){
for(int j = i; j < arr.length - 1; j++){
if(arr[i] > arr[j + 1]){
swap(i, j + 1, arr);
}
}
}
sortPrint(arr);
}
//选择排序,降序打印
public void selectSortDESC(int []arr){
for(int i = 0; i < arr.length - 1; i++){
for(int j = i; j < arr.length - 1; j++){
if(arr[i] < arr[j + 1]){
swap(i, j + 1, arr);
}
}
}
sortPrint(arr);
}
//优化后的选择排序,降序打印
public void selectSortOptDESC(int []arr){
for(int i = 0; i < arr.length - 1; i++){
int num = arr[i];
int index = i;
for(int j = i + 1; j < arr.length; j++){
if(num < arr[j]){
num = arr[j];
index = j;
}
}
if(index != i){
swap(i, index, arr);
}
}
sortPrint(arr);
}
//折半查找
public int halfOfSearch(int [] arr2,int key){
int min = 0;
int max = arr2.length - 1;
int mid;
while(min <= max){
mid = (min + max) >> 1;
if(arr2[mid] < key){
min = mid + 1;
}else if(arr2[mid] > key){
max = mid - 1;
}else{
return arr2[mid];
}
}
return - min - 1;
}
}
分享到:
相关推荐
c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找c语言的冒泡排序和折半查找...
1.简单选择排序 2.折半插入排序 3.冒泡排序 4.顺序查找 5.折半查找
产生2000个随机数,从小到大冒泡排序,折半查找,确定下标对应内容。
冒泡排序。折半查找。两个经典的C语言算法,对于初学者学习C语言可以看看那。
几个算法:选择排序、冒泡排序、快速排序、折半查找
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现 代码运行正常 不会有任何的问题
常见的几种排序方式,包括选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序。vs2008实现,对话框方式,主要实现字符串的由小到大排序。点击“几种排序方法.vcproj“运行。字符集使用多字节集,不能用...
JDBC连数据库的JAVA程序,以及冒泡排序,折半查找.rar
排序容量可自定义,对数组分别用冒泡法和选择法排序。然后用折半查找对输入的数查找,看在数组中是否出现。
python 实现一种改进的冒泡排序,简单选择排序的方法。
使用c#语言编写的winform程序,实现顺序表、单链表、顺序栈、冒泡排序、折半查找 源代码和程序展示: 顺序表:https://blog.csdn.net/HAIIAKU/article/details/119302855 单链表:...
算法基础 参加ACM掌握算法 经典排序和查找算法
8086汇编实现冒泡排序、直接插入排序、折半查找
(2) 使用冒泡排序法,将数组a中的数据按降序排列,并输出; (3) 使用折半查找法在数组a中查找是否有键盘输入的指定数据,并输出查找结论(没找到或在第X个位置找到)。 2. 建立一个一维数组a,完成以下任务,...
由于插入排序的基本操作是在一个有序表中进行查找和插入,这个“查找”操作可利用“折半查找”来实现,由此进行的插入排序称之为折半插入排序(Binary Insertion Sort)。时间复杂度为O(n^2)。理解:依次将每个待...
大二实验作业 顺序表,单链表,顺序表应用,冒泡排序,折半查找 写在一个form窗口
折半查找方法。附上冒泡排序,快速排序。 不错的入门代码。
下面小编就为大家带来一篇Java 选择、冒泡排序、折半查找(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
折半查找 折半查找(又称二分查找)是一种高效的查找算法,适用于已排序的数组或列表。...因此,折半查找比线性查找和冒泡排序等算法更高效。但是,折半查找要求数组必须是有序的,否则无法使用此算法。