程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 指針-插入排序的C遞歸實現,不知道哪裡不對.

指針-插入排序的C遞歸實現,不知道哪裡不對.

編輯:編程綜合問答
插入排序的C遞歸實現,不知道哪裡不對.

#include
#define N 5 //數組長度

int no_rec=0; //記錄遞歸次數的變量
void insert_sort(int );
int main()
{
int arr[N]={5,4,3,2,1};
insert_sort(arr);
for(int i=0;i<=N-1;i++)
printf("%d ",arr[i]);
}
void insert_sort(int *arr) //這個指針在遞歸時從數組首元指向數組的倒數第二 個元素。
{
no_rec+=1;
int key=
(arr+1); //根據這個指針,找到數組的下一個元素,也就是需要插入的 元素。
int j=no_rec;
while(j>0 && (arr+j-1)>key) //這一部分就是一般的插入排序了。
{
*(arr+j)=
(arr+j-1);
j--;
}
*(arr+j)=key;
if(no_rec<N-1) //根據數組的長度 N,確定調用次數
insert_sort(arr+1); //調用時,指針指向下一個元素。
}

可是為什麼不對啊?

最佳回答:


我把lz的程序改動了一下,應該正確了,望采納

 #include<stdio.h>
#define N 5 //數組長度

int no_rec=0; //記錄遞歸次數的變量
void insert_sort(int* );
int main()
{
    int arr[N]={5,3,4,6,1};
    insert_sort(arr);
    for(int i=0;i<=N-1;i++)
    printf("%d ",arr[i]);
} 
void insert_sort(int *arr) //這個指針在遞歸時從數組首元指向數組的倒數第二 個元素。 
{
    no_rec+=1;
    int key=*(arr+no_rec); //根據這個指針,找到數組的下一個元素,也就是需要插入的 元素。
    int j=no_rec;
    while(j>0 && *(arr+j-1)>key) //這一部分就是一般的插入排序了。 
    {
        *(arr+j)=*(arr+j-1);
        j--;
    }
    *(arr+j)=key; 
    if(no_rec<N-1) //根據數組的長度 N,確定調用次數 
        insert_sort(arr); //調用時,指針指向下一個元素。 
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved