- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要制作一个函数,以这样的方式对一维数组进行排序,小于第一个元素的数字移到它前面,大于或等于的数字移到后面。这是我的代码:
#include<stdio.h>
void sort(int a[], int n);
int main(){
int a[10], i, m;
do{
printf("Enter number of elements: ");
scanf("%d", &m);
} while (m < 1 || m > 10);
for (i = 0; i < m; i++)
scanf("%d", &a[i]);
for (i = 0; i < m; i++)
sort(a, m);
for (i = 0; i < m; i++)
printf("%d ", a[i]);
return 0;
}
void sort(int a[], int m){
int i, j, p, temp;
p = a[1];
for (j = 2; j < m; j++){
if (p >= a[j]){
temp = a[j];
a[j] = a[1];
a[1] = temp;
}
}
}
最佳答案
排序功能是个问题。通过纸上的逻辑工作,你会看到发生了什么。您的 p 已固定到位,这是问题的一部分。您会注意到您的输入正在四处移动,这只是移动方式的问题
如果你把它放在适当的位置,这个排序功能应该可以工作。
void sort(int a[], int m){
int i, j, p, temp;
for (i =0; i<m;i++){
for(j=i;j<m;j++){
if (a[j]<a[i]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
编辑,哦,我可能误解了你的问题。这就是说您不希望它们以完全完美的顺序排列,而是您希望小于起始元素的元素位于其前面,但顺序与输入时的顺序相同?
编辑 2:对不起,我误解了你之前的问题。这是我想出的。
#include<stdio.h>
void sort(int a[], int n);
int main(){
int a[10], i, m;
do{
printf("Enter number of elements: ");
scanf("%d", &m);
} while (m < 1 || m > 10);
for (i = 0; i < m; i++)
scanf("%d", &a[i]);
sort(a, m);
for (i = 0; i < m; i++)
printf("%d ", a[i]);
return 0;
}
void sort(int a[], int m){
int i, j, p, temp;
int pindex;
p = a[0];
pindex =0;
for (i =0; i<m;i++){
if(a[i]<p){
temp = a[i];
for(j=i;j>pindex;j--){
a[j] = a[j-1];
}
a[pindex]=temp;
pindex++;
}
}
}
我认为您最初的方法最大的问题是每次循环运行时您都将 p 设置为第一个元素。如果 p 随着每次迭代而改变,它最终会破坏一切。
我所做的更改:我使用名为 pindex 的变量跟踪 p 的当前位置。每当我找到一个小于 p 的元素时,我都会向后滑动每个元素,直到到达 p(包括 p)。然后我将找到的元素放在索引中 p 所在的位置。
希望对您有所帮助。
关于c - 对一维数组进行排序的函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50357133/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!