发布网友 发布时间:2022-04-22 11:08
共7个回答
热心网友 时间:2023-11-02 21:14
public class Demo{
public static void main(String[] args){
int a[] = {28,39,49,78,23};
int x = 49;
//下面是最简单的冒泡排序
int temp;
for(int i=0; i<a.length;++i){
for(int j=a.length-1;j>i;--j){
if(a[j] <a[j-1]){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
System.out.println("排序完成:");
for(int emp:a){
System.out.print(emp+" ");
}
//下面是二分法查找(折中查找)
int first = 0;
int last = a.length-1;
int mid;
while(first<=last){
mid = (first+last)/2;
if(a[mid]==x){
System.out.println("\n查找到x,在数组的第"+(mid+1)+"位");
break;
}
if(a[mid]>x)
last = mid-1;
if(a[mid]<x)
first = mid+1;
}
}
}
热心网友 时间:2023-11-02 21:15
public class Order {
private static int a[] ={28,39,49,78,23};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int c[]=sort(a);
System.out.println(c[0] + ".." + c[1]+ ".." + c[2]);
System.out.println(binarySearch(a,49));
}
/**
* 冒泡法排序
* @param a
* @return
*/
public static int[] sort(int[] a) {
int temp = 0;
for (int i = a.length - 1; i > 0; --i) {
boolean isSort = false;
for (int j = 0; j < i; ++j) {
//如果第一个比第二个大,就交换他们两个
if (a[j + 1] < a[j]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
isSort = true;
}
}
if (!isSort)
break;
}
return a;
}
/**
* 二分查找
* @param a
* @param key
* @return
*/
public static int binarySearch(int[] a, int key) {
if (a.length == 0)
return -1; // 开始位置
int first = 0; // 结束位置
int last = a.length - 1; // 中间位置
int mid; // 如果开始时,小于则结束.
while (first <= last) {
mid = (first + last) / 2;
// 如果等于key,返回这个数在数组中的位置.
if (a[mid] == key)
return mid;
// 如果大于key,则在左边.
if (a[mid] > key)
last = mid - 1;
// 如果小于key,则在右边
if (a[mid] < key)
first = mid + 1;
}
return -1;
}
}
结果
23..28..39热心网友 时间:2023-11-02 21:15
package com.demo;
class ArrayDemo {
public static void main(String[] args) {
int[] arr = { 28, 39, 49, 78, 23 };
int key = 49;
arr = bubbleSort(arr);
System.out.print("\n排序后的数组是:");
for (int i : arr) {
System.out.print(i + ",");
}
System.out.println("\n" + key + "在数据中的位置是:" + halfSearch(arr, key));
}
/**
* 折半查找:对于有序的数组来讲是比较有效率的;
*
* @param arr
* @param key
* @return
*/
public static int halfSearch(int[] arr, int key) {
int min = 0, max = arr.length - 1, mid;
while (min <= max) {
mid = (max + min) >> 1;
if (key > arr[mid])
min = mid + 1;
else if (key < arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
/**
*
* 冒泡排序算法
*
* @param args
* @return
*/
public static int[] bubbleSort(int[] args) {// 冒泡排序算法
for (int i = 0; i < args.length - 1; i++) {
for (int j = i + 1; j < args.length; j++) {
if (args[i] > args[j]) {
int temp = args[i];
args[i] = args[j];
args[j] = temp;
}
}
}
return args;
}
/**
*
* 选择排序算法
*
* @param args
* @return
*/
public static int[] selectSort(int[] args) {// 选择排序算法
for (int i = 0; i < args.length - 1; i++) {
int min = i;
for (int j = i + 1; j < args.length; j++) {
if (args[min] > args[j]) {
min = j;
}
}
if (min != i) {
int temp = args[i];
args[i] = args[min];
args[min] = temp;
}
}
return args;
}
/**
*
* 插入排序算法
*
* @param args
* @return
*/
public static int[] insertSort(int[] args) {// 插入排序算法
for (int i = 1; i < args.length; i++) {
for (int j = i; j > 0; j--) {
if (args[j] < args[j - 1]) {
int temp = args[j - 1];
args[j - 1] = args[j];
args[j] = temp;
} else
break;
}
}
return args;
}
}
热心网友 时间:2023-11-02 21:16
直接用java里面的a.sort()方法就可以了,要是不会的话,冒泡排序也行,那个也可以
热心网友 时间:2023-11-02 21:16
public class Demo
{
public static void main(String[] args)
{
int a[]={28,39,49,78,23};
for(int i=0;i<a.length-1;i++)
{
for(int j=i+1;j<a.length;j++)
{
if(a[i]>a[j])
{
int k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
int arr=28;
int index=0;
int max=a.length;
int min=0;
while(true)
{
index=((min+max)>>>1)+1;
if(arr>a[index])
{
min=index+1;
}
else if(arr<a[index])
{
max=index-1;
}
else
{
System.out.println("索引"+index);
return;
}
}
}
}
热心网友 时间:2023-11-02 21:17
简单排序,升序,直接用Arrays.sort(a),然后查找49
热心网友 时间:2023-11-02 21:18
我写的一个小例子,希望可以帮到你