Full width home advertisement

HTML

Tech News

Ad

  1. /*
  2. << Algorithm >>
  3. Step 1
  4. Read a[n]
  5. Step 2
  6. Repeat for d=n/2 to 1 step by d/2
  7. Repeat for k=d/2 to n step by one
  8. key<-a[k]
  9. j<-j-d
  10. f<-0
  11.  
  12. Repeat while j>=1 and f=0
  13. if(key<=a[j]) then
  14. a[j+d]=a[j]
  15. j<-j-d
  16. else
  17. f<-1
  18. End if
  19. End while
  20. a[j+d]<-key
  21. End for(k)
  22. End for(d)
  23.  
  24. Step 3
  25. write a[n]
  26.  
  27. */
  28. #include<stdio.h>
  29. #define true 1
  30. #define false 0
  31.  
  32. void shell(int a[],int n);
  33.  
  34. int main(){
  35. int a[100],i,n;
  36. printf("What's Your limit ? ");
  37. scanf("%d",&n);
  38. for(i=1;i<=n;i++){
  39. printf("Enter %d Data ",i);
  40. scanf("%d",&a[i]);
  41. }
  42. shell(&a[0],n);
  43. printf("Sorted successfully\n");
  44. for(i=1;i<=n;i++){
  45. printf("%d ",a[i]);
  46. }
  47. return 0;
  48. }
  49. void shell(int *a,int n){
  50. int d,k,key,flag,j;
  51. for(d=n/2;d>=1;d=d/2){
  52. for(k=d+1;k<=n;k++){
  53. key=a[k];
  54. j=k-d;
  55. flag=false;
  56. while(j>=1&&flag==false){
  57. if(key<a[j]){
  58. a[j+d]=a[j];
  59. j=j-d;
  60. }
  61. else{
  62. flag=true;
  63. }
  64. }
  65. a[j+d]=key;
  66. }
  67. }
  68. }

OUTPUT



No comments:

Post a Comment

Bottom Ad [Post Page]