c - C插入排序卡在while循环中
问题描述
我正在编写一个简单的程序来对一个小数组进行排序,但是当我运行我的代码进行插入排序时,程序只会永远运行。
这可能是while循环的问题。我在纸上浏览了该程序并查看了其他人的代码,但我无法弄清楚为什么它不起作用。
void mySort(int d[], unsigned int n){
int i, j, k;
for (j = 1;j < n;i++){
k = d[j];
i = j-1;
while (d[i] > k && i >=0){
d[i+1] = d[i];
d[i] = k;
i = i - 1;
}
}
}
解决方案
for (j = 1;j < n;i++){
你比较价值j
,但你增加价值i
。
如果您使用 Debugger,您会立即注意到该值j
没有更新,并且您会立即发现问题!
始终使用调试器
推荐阅读
- scala - 播放框架 - 使表单验证异步 - 编译错误
- caching - 高速缓存设计——地址解码
- reactjs - JSX 条件渲染
- azure - 如何将 IIS 服务器在 Windows VM 中生成的日志存储到 blob 存储中?
- c++ - 在 C++ 中将 ddhhmm 转换为 YYYY-MM-DD hh:mm 格式
- c# - 无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化
- angular - 带有散列的角度 8 中的路由问题#
- ios - FASTLANE ipa 尺寸双倍 xcode
- pki - Microsoft CA 自动注册
- css - IE 变换样式:preserve-3d carousel