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.

Câu hỏi trong lớp Xem thêm