Hãy viết hàm sắp xếp lẻ tăng dần nhưng giá trị khác giữ nguyên vị trí.
2 câu trả lời
Pascal
program Hello;
var a:array[1..100000] of longint;
n,i,j,t:longint;
procedure sapxep;
begin
for i:= 1 to n do
for j:= i+1 to n do
if (a[i] mod 2 <> 0) and (a[j] mod 2 <> 0) and (a[i] > a[j]) then
begin
t:= a[i];
a[i]:= a[j];
a[j]:= t;
end;
end;
begin
readln(n);
for i:= 1 to n do
read(a[i]);
sapxep;
for i:= 1 to n do
write(a[i], ' ');
readln;
readln;
end.
==========================================
C++
#include <bits/stdc++.h>
using namespace std;
void sapxep(int a[], int n){
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
if (a[i] % 2 != 0 && a[j] % 2 != 0 && a[i] > a[j])
swap(a[i],a[j]);
}
main(){
int a[100000],n,i,j;
cin >> n;
for (i = 0; i < n; i++) cin >> a[i];
sapxep(a,n);
for (i = 0; i < n; i++) cout << a[i] << " ";
}
uses crt;
var i,n:longint; a:array[1..10000000]of longint;
procedure sort;
var i,j,t:longint;
begin
for i:=1 to n do
for j:=1 to i do
if (a[i] mod 2=1)and(a[j] mod 2=1)and(a[i]<a[j]) then
begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
end;
begin
clrscr;
write('Nhap so luong phan tu: ');readln(n);
for i:=1 to n do
begin
write('Nhap vao phan tu thu ',i,': ');readln(a[i]);
end;
sort;
for i:=1 to n do write(a[i],' ');
readln
end.