14-matlab排序

冒泡和选择:

clc;
clear;
n = 10;    %输入数据的个数
suct = 0;  %素数的个数
unsuct = 0;%非素数的个数

% a = [33    34     2    34    24    56     3    17     7    11] 
for i = 1:n
    fprintf('第%d个数', i);
    a(i) = input('请输入:');
end
fprintf('输入的序列为:')
a
for i = 1 : n
%     a=input('输入:');
    if isprime(a(i)) == 1
        suct = suct + 1;
        su(suct) = a(i);
    else
        unsuct = unsuct + 1;
        unsu(unsuct) = a(i);
    end
end
su1 = su;
fprintf('素数排序前:')
su
%冒泡排序:
n = suct;
for i = 1:n
    for j = 2:n-i+1
        if su1(j-1) > su1(j)   %每次去找一个逆序,交换位置
            temp = su1(j-1);
            su1(j-1) = su1(j);
            su1(j) = temp;
        end
	end
end
fprintf('素数冒泡排序的结果:')
su1
%非素素排序
unsu1 = unsu;
fprintf('非素数排序前:')
unsu
%冒泡排序:
n = unsuct;
for i = 1:n
    for j = 2:n-i+1
        if unsu1(j-1) > unsu1(j) %每次去找一个逆序,交换位置
            temp = unsu1(j-1);
            unsu1(j-1) = unsu1(j);
            unsu1(j) = temp;
        end
	end
end
fprintf('非素数冒泡排序的结果:')
unsu1

  

clc;
clear;
n = 10;    %输入数据的个数
suct = 0;  %素数的个数
unsuct = 0;%非素数的个数

% a = [8 45 23 7 56 99 48 17  75 48] 
% 读入十个数并判断素数:
for i = 1:n
    fprintf('第%d个数', i);
    a(i) = input('请输入:');
end

for i = 1 : n
%     a=input('输入:');
    if isprime(a(i)) == 1
        suct = suct + 1;
        su(suct) = a(i);
    else
        unsuct = unsuct + 1;
        unsu(unsuct) = a(i);
    end
end

%插入排序
%素数排序
su1 = su;
fprintf('素数排序前:')
su
m = suct;
for i=2:m
    if su1(1,i)<su1(1,i-1)
        j=i-1; 		 %记录这个位置
        temp=su1(i); %将这个位置的元素值取出来
        su1(i)=su1(i-1); %将大的元素后移
        while (j-1)>0  %这里实现待插入的元素和已排好序列进行比较
            if temp<su1(j-1)
                su1(j)=su1(j-1);
            else
                break;
            end
            j=j-1;
        end
        su1(j)=temp;
    end
end
fprintf('素数选择排序的结果:')
su1

%非素数排序:
unsu1 = unsu;
fprintf('非素数排序前:')
unsu
m = unsuct;
for i=2:m
    if unsu1(1,i)<unsu1(1,i-1)
        j=i-1; 		%记录这个位置
        temp=unsu1(i); %将这个位置的元素值取出来
        unsu1(i)=unsu1(i-1); %将大的元素后移
        while (j-1)>0  %这里实现待插入的元素和已排好序列进行比较
            if temp<unsu1(j-1)
                unsu1(j)=unsu1(j-1);
            else
                break;
            end
            j=j-1;
        end
        unsu1(j)=temp;
    end
end
fprintf('非素数选择排序的结果:')
unsu1

  

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10201986.html