c/c++语言开发共享c插入排序错误

我正在进行交流插入排序,它工作正常,但排序后第一个数字总是一个奇怪的负数,程序错误。

#include  #include  #include  void insertionSort(int list[], int last){ int hold; int walker; int current; int count; count = 0; for (current = 1; current = 0 && hold < list[walker]; walker--){ list[walker + 1] = list[walker]; } list [walker + 1] = hold; count++; } printf("nnHow many passes to sort?n%dnn", count); return; } int main(int argc, char *argv[]) { int numbers[100]; int i; srand(time(NULL)); for (i = 0; i < 100; i++){ numbers[i] = rand() % 100; } printf("Unsorted Numbersn-------- -------n"); for (i = 0; i < 100; i++){ printf("%d,", numbers[i]); } insertionSort(numbers, 100); printf("nSorted Numbersn-------- -------n"); for (i = 0; i < 100; i++){ printf("%d,", numbers[i]); } system("PAUSE"); return 0; } 

    你将在循环中超过数组大小。 当current = last时,list [last]是list [100],数组的第101个元素……这也不好。

    编辑。 我刚刚测试了它,它对我有用。 我唯一改变的是外部循环中的<=到n <

     void insertionSort(int list[], int last){ int hold; int walker; int current; int count; count = 0; for (current = 1; current < last; current++){ hold = list[current]; for (walker = current - 1; walker >= 0 && hold < list[walker]; walker--){ list[walker + 1] = list[walker]; } list [walker + 1] = hold; count++; } printf("nnHow many passes to sort?n%dnn", count); return; } 

    如果你声明一个像这样的数组

     int numbers[100] 

    数字[99]是最后一个元素。 在排序function中,您也可以访问数字[100]

      以上就是c/c++开发分享c插入排序错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519454.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐