⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quicksort.p

📁 pascal-s编译器
💻 P
字号:
type ktyp=array [1:100] of integer;         //存放排序数的数组类型
var  n:integer;i,j:integer;                         //将要排序的个数以及索引变量
        k:ktyp;                                             //存放输入的排序数
procedure swap(var a,b:integer);
var temp:integer;
begin
     temp:=a; a:=b; b:=temp;
end;
procedure quick(var k:ktyp;s,t:integer);
var i,j,flag,flag1:integer;
begin
       flag:=1;
       if s<t 
       then
        begin 
                    i:=s; j:=t+1;
            while flag=1 do
            begin 
                do
                begin
                      i:=i+1;
                      if k[s]>k[i]
                      then 
                        begin
                         if i<>t  then flag1:=1 //  
                         else flag1:=0            //
                        end                            //
                      else flag1:=0;               //等价于!(k[s]<=k[i] || i==t))
                end while flag1=1;
               do
               begin
                      j:=j-1;
                      if k[s]<k[j]
                      then 
                        begin
                         if j<>s  then flag1:=1 //  
                         else flag1:=0            //
                        end                            //
                      else flag1:=0;               //等价于!(k[s]<=k[t] || j==s))
               end while flag1=1;
                if i<j  then    swap(k[i],k[j])
                else  flag:=0 ;                    //跳出最外层循环 
            end;
               swap(k[s],k[j]); 
               quick(k,s,j-1);      //递归调用 
               quick(k,j+1,t);      //递归调用 
         end;
end;        
procedure quicksort(var k:ktyp;n:integer);
begin
           quick(k,1,n);
end;
begin
          
                 writeln("请输入排序数的个数:");
                 read(n);                                   //输入将要排序的数的个数
                 writeln("请依次输入各数:");
                 for i:=1 to n do
                  begin 
                       read(k[i]);                           //依次读入各将要排序的数 
                   end;     
                  quicksort(k,n);                     //调用快速排序函数    
                  writeln("排序后的结果:");                  //循环输出排序结果
                  for j:=1 to  n do
                  begin
                    write(k[j]);write("  ");
                 end;
end.  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -