#include <stdio.h>
void cutnumber(int k[],int q){
int i,j;
for (i=0; i<q-1; i++) { //去重
for (j=i+1; j<q; j++) {
if (k[j]==k[i]) {
k[j]=-1;
}
}
}
}
void insort(int k[],int n){ //排序
int i,j;
int temp;
for (i=1; i<n; i++) {
temp=k[i];
for (j=i-1; j>=0&&temp<k[j]; j--) {
k[j+1]=k[j];
}
k[j+1]=temp;
}
}
int main()
{
int a[]={1,4,5,3,3,6,7,7,0,9,1,4};
insort(a, 12);
cutnumber(a, 12);
for (int i=0; i<12; i++) {
if (a[i]>=0) {
printf("%d ",a[i]);
}
}
}
对与一系列>=0的整数,能这么写吗?
可以这么写,但是没有必要,你这个去重复单独做了2重循环。实际上去重和排序可以一次搞定
int insort(int k[],int n){
int q = n;
for (int i = 0; i < q; i++)
{
int m = i;
for (int j = m + 1; j < q; j++)
{
if (k[m] > k[j])
{
m = j;
}
else
{
if (k[m] == k[j])
{
int t = k[q - 1];
k[q - 1] = k[j];
k[j] = t;
q--;
j--;
}
}
}
if (m != i)
{
int t = k[m];
k[m] = k[i];
k[i] = t;
}
}
return q;
}
int main()
{
int a[]={1,4,5,3,3,6,7,7,0,9,1,4};
int q = insort(a, 12);
for (int i=0; i<q; i++) {
printf("%d ",a[i]);
}
}
如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢