Monday, January 31, 2022

B2B (Business to Business) sales approach


What is your product

   First understand your product in and out. There are many sale professionals think that they can sell anything. It is more than that. what problem your product solves? What is the value add?


Value proposition

  There are two types of products first in the market and improved .
  Is your product first in the market? If it is whats the value add? Usually early market adapters a bit hesitant. You will have to plan for trial phase.

  If you improved something already existing, then you need to be clear on what's the value add? Does that save cost? Reduces complexity? Improved performance?

Customer pain points

  Hard to see what pain points you are solving when you are coming up with a product. This depends on what is the execution times are . For quick turn around products customer pain points can be easily identified and fixed. If it is longer product cycle, customer and seller can find a middle ground.

Stay in front of customers

  Even if particular business not customer yet, it is important to stay in touch with customer. Asking for opinion on what's changing with your product.

Have market research handy
  Do market research on you product. Check what blogs say or analysts talking about your product and company.

Keep eye on competition

Generate ideas on creative ways of using your product.

Execute your action plan

Look ahead of curve

Have a story

Have a multi fanged plan

Def fence strategy

Offence strategy

Model your sales strategy

Think through and analyze your strategy

Learn how to use data and market trends to see how your product can be fit to the market.



Thursday, March 2, 2017

c prog quick sort

/*
 * gcc.c4.2.1-p4a.x86_64 -g3 quick_sort.c  -o quick_sort
 *
 * Quick sort is devide and conquer algorithm. It first divides a large array into smaller sub-arrays: The low elements and the high
 * elements. Quick sort can then recursively sort the sub-arrays.
 *
 * 1. Pick element, called pivot, from the array.
 * 2. Partitioning: reorder the array so that all elements with the values less than the pivot come before the pivot,
 *    while all elements with values greater than the pivot come after it . After partitioning, the pivot is in its final poisiton.
 * 3. recursively apply the above steps to the sub sub-array of elements. whtih smaller values.
 *
 *  algorithm quicksort(A, lo, hi) is
 *      if lo < hi then
 *          p := partition(A, lo, hi)
 *          quicksort(A, lo, p – 1)
 *          quicksort(A, p + 1, hi)
 *  algorithm partition(A, lo, hi) is
 *      pivot := A[hi]
 *      i := lo        // place for swapping
 *      for j := lo to hi – 1 do
 *          if A[j] ≤ pivot then
 *              swap A[i] with A[j]
 *              i := i + 1
 *      swap A[i] with A[hi]
 *      return i
 */
#include
#include "sort_common.h"

#define DATASIZE 25
int data1[25] = {25,22,23,21,19,24,18,20,17,14,16,13,15,12,10,11,9,7,8,6,4,5,3,1,2};

/*
 * Loumuto partition scheme
 * Algorithm maintains the index to put the pivot in variable i and each time it finds an element
 * less than or equal to pivot, this index is incremented and that element would be placed before
 * the pivot. This schem is more compact and easy to understand, it is frequently used.
 */
int lomuto_partition(int *array, int lo, int hi)
{
    int pivot = 0;
    int i = 0, j = 0;
    pivot = array[hi];
   int i = 0, j = 0;                                                                                                                                                                                                                                                       [63/24342]
    pivot = array[hi];
    i = lo;
    for( j = lo; j <= hi-1; j++) {
        if(array[j] <= pivot) {
            swap(&array[j], &array[i]);
            printf("Inside swap array[%d]=%d array[%d]=%d\n", j, array[j], i, array[i]);
            i= i + 1;
        }
    }
    swap(&array[i], &array[hi]);
    printf("Outside swap array[%d]=%d array[%d]=%d\n", j, array[j], i, array[i]);
    return i;
}


void quick_sort(int *array, int lo, int hi)
{
    int pi = 0;
    if(lo < hi) {
        pi = lomuto_partition(array, lo, hi);
        printf("pi=%d\n", pi);
        quick_sort(array, lo, pi - 1);
        quick_sort(array, pi + 1, hi);
    }
}
/*
 * Hoare partition scheme:
 *  Two indices that start at the ends of the array being partitioned,
 *  then move toward each other, until they detect an inversion: pair of
 *  elements, one greater than the pivot, one smaller, that are in the wrong order
 *  relative to each other. The inverted elements are then swapped. When indices
 *  meet algorithm stops and returns ihe final index.
 *  algorithm quicksort(A, lo, hi) is
 *
 *  if lo < hi then
 *      p := partition(A, lo, hi)
 *      quicksort(A, lo, p)
 *      quicksort(A, p + 1, hi)
 *  algorithm partition(A, lo, hi) is
 *      pivot := A[lo]
 *      i := lo – 1
 *      j := hi + 1
 *      loop forever
 *          do
 *              i := i + 1
 *          while A[i] < pivot
 *
 *          do
 *              j := j – 1
 *          while A[j] > pivot
 *
 *          if i >= j then
 *              return j
 *
 *          swap A[i] with A[j]
 *
 */

int hoare_partition(int *array, int lo, int hi)
{
    int pivot = 0;
    int i=0,j=0;
    j = hi + 1;
    i = lo - 1;
  j = hi + 1;                                                                                                                                                                                                                                                              [0/24342]
    i = lo - 1;
    pivot = array[lo];
    while(1) {
        do{
            i = i + 1;
            //printf("i inc i=%d j=%d array[i]=%d pivot= %d \n", i, j, array[i], pivot);
        } while (array[i] < pivot);
        do{
            j = j - 1;
            //printf("i inc i=%d j=%d array[j]=%d pivot= %d \n", i, j, array[j], pivot);
        } while (array[j] > pivot);

        if( i >= j) {
            printf("return i=%d j=%d\n", i, j);
            return j;
        }
        swap(&array[i], &array[j]);
        //printf("outside swap array[%d]=%d array[%d]=%d\n", j, array[j], i, array[i]);
    }
}
void quick_sort1(int *array, int lo, int hi)
{
    int pi = 0;
        printf("outside pi=%d lo=%d hi=%d \n", pi, lo, hi);
    if(lo < hi) {
        pi = hoare_partition(array, lo, hi);
        printf("inside pi=%d lo=%d hi=%d \n", pi, lo, hi);
        show_data_flat(sizeof(data1)/(sizeof(int)), array);
        quick_sort1(array, lo, pi);
        quick_sort1(array, pi + 1, hi);
    }
}

int main(void)
{
    show_data(sizeof(data1)/(sizeof(int)), data1);
    //quick_sort(data1, 0, sizeof(data1)/(sizeof(int)) - 1);
    quick_sort1(data1, 0, sizeof(data1)/(sizeof(int)) - 1);
    show_data(sizeof(data1)/(sizeof(int)), data1);
}