{ //采用直接插入排序的方法对数组A中的n的元素排序 DataType x//用于交换时的暂存扮氏
int i,j,k for(i=1i<ni++)
{
//找到插入的位置k:
k=i
for(j=i-1j>=0j--)
{
if(A[i]>A[j])
{
k=j+1
break
}
cout<<j<<endl
}
//
if(k==i)
{
//说明插入的位置是最后一个,不用移动位置
}
else
{
x=A[i]
//将结点后移:
for(j=ij>kj--)
{
A[j]=A[j-1]
}
A[k]=x
}
} return
} 【算法的使用例子】#include "iostream"
using namespace std
#define DataLeng 5
typedef int DataType//祥缺橘显示数据:
void printData(DataType A[], int n)
{ for(int i=0i<ni++)
{
cout<<A[i]<<" "
}
cout<<endl
return
} void main()
{ int data[5]={3,8,5,4,6}//排序前:
cout<<"<1>没有排序前的顺序是:"<<endl
printData(data,DataLeng)//排序:
InsertSort(data,DataLeng)/谨团/排序后:
cout<<"<2>排序后的顺序是:"<<endl
printData(data,DataLeng)return
}
int Insert_sort(float*p, int 手段n, float x ){
int i,j
for(i=0i<ni++)
if(x<p[i])break
for(j=ij<10j++)
p[j+1]=p[j]
p[i]=x
return 埋薯谈0
}
鉴于你没有说明参数n是什么,我就认为它是第几个弯碰数字的标号,从1开始到10结束
//你那程序太难念举改罩高前了,每个方法都物清单职责啊public class Test6 {
//二分查找
public static int findPos(int[] a,int key) {
int start=0
int end=a.length-1
int temp=0
while(start<end){
int mid=(start+end)/2
if(key>a[mid]){
start=mid+1
temp=start
}else if(key<a[mid]){
end=mid-1
temp=end
}else {
return mid
}
}
return temp
}
public static void main(String[] args) {
int[]array={1,4,6,7,10,11,23,78}
System.out.println(findPos(array, 0))
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)