首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

二分法插入排序如何做

2012-04-23 
二分法插入排序怎么做#include stdafx.hint main(int argc, char* argv[]){int n1,n2,x,iint A[20]for

二分法插入排序怎么做
#include "stdafx.h"

int main(int argc, char* argv[])
{int n1,n2,x,i;
 int A[20];
 for(i=0;i<=9;i++)
 scanf("%d",&A[i]);
 scanf("%d",&x);
 n1=0;
 n2=i-1;
 for(;n1!=n2;)
 {
 if(n2-n1+1==0)
printf("%d",i);
 else
 {if(x>=A[(n1+n2)/2])
n1=(n1+n2)/2+1;
else
n2=(n1+n2)/2-1;
 }
 }
 for(i=n1;i<=10;i++)
 {
A[i+1]=A[i];
A[i]=x;
 }
 for(i=0;i<=10;i++)
 printf("%d",A[i]);
return 0;
}
我做的不对,麻烦各位帮我一下,谢谢

[解决办法]

C/C++ code
#include<stdio.h>#include<string.h>#include<stdlib.h>void sort(int arr[], int n);int main(int argc, char* argv[]){    int n1,n2,x,i;     int A[20];     for(i=0;i<=9;i++)         scanf("%d",&A[i]);        sort(A, 10);        printf("排序后..\n");        for(i=0;i<=9;i++) {         printf("%d ",A[i]);    }    printf("\n");        printf("输入要插入的元素: ");     scanf("%d",&x);     n1=0;     n2=i-1;     //for(;n1!=n2;)    for(;n1<=n2;)     {         if(n2-n1+1==0) {            printf("%d",i);        }         else         {             if(x>=A[(n1+n2)/2])                n1=(n1+n2)/2+1;            else                n2=(n1+n2)/2-1;         }     }     //for(i=n1;i<=10;i++)    for(i = 9; i >= n1; i--)     {         A[i+1]=A[i];        //A[i]=x;     }        A[n1] = x;        printf("插入后: \n");     for(i=0;i<=10;i++)         printf("%d ",A[i]);    printf("\n");    return 0;}void sort(int arr[], int n){    int i, j, k;    int temp;    for(i = 0; i < n-1; i++) {        k = i;        for(j = i + 1; j < n; j++) {            if(arr[k] > arr[j]) {                k = j;            }        }        if(k != i) {            temp = arr[k];            arr[k] = arr[i];            arr[i] = temp;        }    }} 

热点排行
Bad Request.