冒泡和选择:
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