×

关于我们

排序算法

Very2 Very2 发表于2026-06-13 浏览75 评论0

冒泡排序-普通版:

#include <iostream>  
using namespace std;  
int a[1001], n;  
int main() {  
    cin >> n;  
    for (int i = 1; i <= n; i++)  
        cin >> a[i];  
    for (int i = 1; i <= n - 1; i++)  
        for (int j = 1; j <= n - i; j++)  
            if (a[j] > a[j + 1])  
                swap(a[j], a[j + 1]);  
    for (int i = 1; i <= n; i++)  
        cout << a[i] << " ";  
    return 0;  
}

关于我们

【例2.3】的算法:在顺序表L中删除所有值为x的元素

Very2 Very2 发表于2026-06-13 浏览44 评论0
//【例2.3】的算法:在顺序表L中删除所有值为x的元素
#include "sqlist.cpp"
void delnode1(SqList *&L,ElemType x)
{
int k=0,i;  //k记录值不等于x的元素个数
for  (i=0;i<L->length;i++) 
if (L->data[i]!=x)
{
L->data[k]=L->data[i];
k++;    //不等于x的元素增1
}
L->length=k;  //顺序表L的长度等于k
}
void delnode2(SqList *&L,ElemType x)
{ 
int k=0,i=0; //k记录值等于x的元素个数
while (i<L->length) 
{
if (L->data[i]==x) 
k++;
else 
L->data[i-k]=L->data[i]; //当前元素前移k个位置
i++;
}
L->length-=k;//顺序表L的长度递减k
}

int main()
{
ElemType a[]={1,2,2,1,0,2,4,2,3,1};
ElemType x=2;
SqList *L;
CreateList(L,a,10);
printf("L:");DispList(L);
printf("删除值为%d的元素\n",x);
delnode2(L,x);
printf("L:");DispList(L);
DestroyList(L);
return 1;
}